簡介 主要內容包括
如何將文本處理為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 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。
|