深度學習——如何用LSTM進行文字分類
簡介
主要內容包括
如何將文字處理為Tensorflow LSTM的輸入
如何定義LSTM
用訓練好的LSTM進行文字分類
程式碼
匯入相關庫
#coding=utf-8
import tensorflow as tf
from tensorflow.contrib import learn
import numpy as np
from tensorflow.python.ops.rnn import static_rnn
from tensorflow.python.ops.rnn_cell_impl import BasicLSTMCell
資料
# 資料
positive_texts = [
"我 今天 很 高興" ,
"我 很 開心" ,
"他 很 高興" ,
"他 很 開心"
]
negative_texts = [
"我 不 高興" ,
"我 不 開心" ,
"他 今天 不 高興" ,
"他 不 開心"
]
label_name_dict = {
0 : "正面情感" ,
1 : "負面情感"
}
配置資訊
配置資訊
embedding_size = 50
num_classes = 2
將文字和 label 數值化
# 將文字和label數值化
all_texts = positive_texts + negative_textslabels = [ 0 ] * len (positive_texts) + [ 1 ] * len (negative_texts)
max_document_length = 4
vocab_processor = learn.preprocessing.VocabularyProcessor(max_document_length)
datas = np.array( list (vocab_processor.fit_transform(all_texts)))
vocab_size = len (vocab_processor.vocabulary_)
定義 placeholder( 容器 ) ,存放輸入輸出
# 容器,存放輸入輸出
datas_placeholder = tf.placeholder(tf.int32, [ None , max_document_length])
labels_placeholder = tf.placeholder(tf.int32, [ None ])
詞向量處理
# 詞向量表
embeddings = tf.get_variable( "embeddings" , [vocab_size, embedding_size], initializer = tf.truncated_normal_initializer)
# 將詞索引號轉換為詞向量[None, max_document_length] => [None, max_document_length, embedding_size]
embedded = tf.nn.embedding_lookup(embeddings, datas_placeholder)
將資料處理為 LSTM 的輸入格式
# 轉換為LSTM的輸入格式,要求是陣列,陣列的每個元素代表某個時間戳一個Batch的資料
rnn_input = tf.unstack(embedded, max_document_length, axis = 1 )
定義 LSTM
# 定義LSTM
lstm_cell = BasicLSTMCell( 20 , forget_bias = 1.0 )
rnn_outputs, rnn_states = static_rnn(lstm_cell, rnn_input, dtype = tf.float32)
#利用LSTM最後的輸出進行預測
logits = tf.layers.dense(rnn_outputs[ - 1 ], num_classes)
predicted_labels = tf.argmax(logits, axis = 1 )
定義損失和最佳化器
# 定義損失和最佳化器
losses = tf.nn.softmax_cross_entropy_with_logits(
labels = tf.one_hot(labels_placeholder, num_classes),
logits = logits
)
mean_loss = tf.reduce_mean(losses)
optimizer = tf.train.AdamOptimizer( learning_rate = 1e-2 ).minimize(mean_loss)
執行
with tf.Session() as sess:
# 初始化變數
sess.run(tf.global_variables_initializer())
訓練 # 定義要填充的資料
feed_dict = {
datas_placeholder: datas,
labels_placeholder: labels
}
print ( "開始訓練" )
for step in range ( 100 ):
_, mean_loss_val = sess.run([optimizer, mean_loss], feed_dict = feed_dict)
if step % 10 == 0 :
print ( "step = {} \tmean loss = {} " .format(step, mean_loss_val))
預測
print ( "訓練結束,進行預測" )
predicted_labels_val = sess.run(predicted_labels, feed_dict = feed_dict)
for i, text in enumerate (all_texts):
label = predicted_labels_val[i]
label_name = label_name_dict[label]
print ( " {} => {} " .format(text, label_name))
分享安排:
目標:
1.掌握大資料建模分析與使用方法。
2.掌握大資料平臺技術架構。
3.掌握國內外主流的大資料分析與BI商業智慧分析解決方案。
4.掌握大資料分析在搜尋引擎、廣告服務推薦、電商資料分析、金融客戶分析方面的應用。
5.掌握主流的基於大資料Hadoop和Spark、R的大資料分析平臺架構和實際應用。
6.掌握基於Hadoop大資料平臺的資料探勘和資料倉儲分散式系統平臺應用,以及商業和開源的資料分析產品加上Hadoop平臺形成大資料分析平臺的應用剖析。
7.掌握常見的機器學習演算法。
具體內容:
一、大資料概述:1.大資料及特點分析;2.大資料關健技術;3.大資料計算模式;4.大資料應用例項
二、大資料處理架構Hadoop:1.Hadoop專案結構;2.Hadoop安裝與使用;3.Hadoop叢集的部署與使用;4.Hadoop 代表性元件
三、分散式檔案系統HDFS :1.HDFS體系結構;2.HDFS儲存;3.HDFS資料讀寫過程
四、分散式資料庫HBase :1.HBase訪問介面;2.HBase資料型別;3.HBase實現原理;4.HBase執行機制;5.HBase應用
五、MapReduce :1.MapReduce體系結構;2.MapReduce工作流程;3.資源管理排程框架YARN ;4.MapReduce應用
六、Spark :1.Spark生態與執行架構;2.Spark SQL;3.Spark部署與應用方式
七、IPython Notebook執行Python Spark程式:1.Anaconda;2.IPython Notebook使用Spark;3.使用IPython Notebook在Hadoop YARN模式執行
八、Python Spark整合開發環境 :1.Python Spark整合開發環境部署配置;2.Spark資料分析庫MLlib的開發部署
九、Python Spark決策樹二分類與多分類 :1.決策樹原理;2.大資料問題;3.決策樹二分類;4.決策樹多分類
十、Python Spark支援向量機 :1.支援向量機SVM 原理與演算法;2.Python Spark SVM程式設計
十一、Python Spark 貝葉斯模型 :1.樸素貝葉斯模型原理;2.Python Spark貝葉斯模型程式設計
十二、Python Spark邏輯迴歸 :1.邏輯迴歸原理;2.Python Spark邏輯迴歸程式設計
十三、Python Spark迴歸分析 :1.大資料分析;2.資料集介紹;3.Python Spark迴歸程式設計
十四、Spark ML Pipeline 機器學習流程分類 :1.機器學習流程元件:StringIndexer、OneHotEncoder、VectorAssembler等
2.使用Spark ML Pipeline 機器學習流程分類程式設計
十五、Python Spark 建立推薦引擎 :1.推薦演算法;2.推薦引擎大資料分析使用場景;3.推薦引擎設計
十六、專案實踐:1.日誌分析系統與日誌挖掘專案實踐;2.推薦系統專案實踐
學習可關注人工智慧技術與諮詢,更多詳情可諮詢152-3187-5710(v同號),qq群:189696007。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70021344/viewspace-2919545/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何用 Python 和深度遷移學習做文字分類?Python遷移學習文字分類
- 深度學習-LSTM深度學習
- 使用Keras進行深度學習:(六)LSTM和雙向LSTM講解及實踐Keras深度學習
- 萬字總結Keras深度學習中文文字分類Keras深度學習文字分類
- 乾貨 | 深度學習在文字分類中的應用深度學習文字分類
- 如何用機器學習對文字分類機器學習文字分類
- 深度學習(三)之LSTM寫詩深度學習
- 【長篇乾貨】深度學習在文字分類中的應用深度學習文字分類
- 深度學習(二)之貓狗分類深度學習
- 達觀資料曾彥能:如何用深度學習做好長文字分類與法律文書智慧化處理深度學習文字分類
- 用TensorFlow進行深度學習深度學習
- 乾貨解析|深度學習文字分類在支付寶投訴文字模型上的應用深度學習文字分類模型
- 系統學習NLP(十九)--文字分類之FastText文字分類AST
- 深度學習(一)之MNIST資料集分類深度學習
- 深度學習(四)之電影評論分類深度學習
- 用腦電波控制智慧假肢:如何利用深度學習技術進行EGG資料分類深度學習
- 深度學習專案實戰:垃圾分類系統深度學習
- pytorch深度學習分類程式碼簡單示例PyTorch深度學習
- 用深度學習進行欺詐檢測深度學習
- 深度學習四從迴圈神經網路入手學習LSTM及GRU深度學習神經網路
- 利用LSTM做語言情感分類
- 讀懂深度學習,走進“深度學習+”階段深度學習
- NLP-使用CNN進行文字分類CNN文字分類
- Python自然語言處理 6 學習分類文字Python自然語言處理
- 深度學習課程--assign3--LSTM結構的理解深度學習
- Python利用深度學習進行文字摘要的綜合指南(附教程)Python深度學習
- 帶你用深度學習虛擬機器進行文字遷移學習(附程式碼)深度學習虛擬機遷移學習
- 基於深度學習的時間序列分類[含程式碼]深度學習
- 深度學習之電影二分類的情感問題深度學習
- 如何利用深度學習分類Yelp上的商業圖片深度學習
- keras框架下的深度學習(二)二分類和多分類問題Keras框架深度學習
- 序列資料和文字的深度學習深度學習
- NLP入門(十)使用LSTM進行文字情感分析
- 深度學習Tensorflow實戰,新課進行曲!深度學習
- AWS上使用MXNet進行分散式深度學習分散式深度學習
- 如何用Python和機器學習訓練中文文字情感分類模型?Python機器學習模型
- 文字分類-TextCNN文字分類CNN
- 文字分類模型文字分類模型