簡介 主要內(nèi)容包括
如何將文本處理為Tensorflow LSTM的輸入 如何定義LSTM 用訓(xùn)練好的LSTM進(jìn)行文本分類
代碼 導(dǎo)入相關(guān)庫 #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 數(shù)據(jù)
# 數(shù)據(jù) positive_texts = [ "我 今天 很 高興", "我 很 開心", "他 很 高興", "他 很 開心" ] negative_texts = [ "我 不 高興", "我 不 開心", "他 今天 不 高興", "他 不 開心" ] label_name_dict = { 0: "正面情感", 1: "負(fù)面情感" } 配置信息
配置信息 embedding_size = 50 num_classes = 2 將文本和label數(shù)值化 # 將文本和label數(shù)值化 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) # 將詞索引號(hào)轉(zhuǎn)換為詞向量[None, max_document_length] => [None, max_document_length, embedding_size] embedded = tf.nn.embedding_lookup(embeddings, datas_placeholder) 將數(shù)據(jù)處理為LSTM的輸入格式 # 轉(zhuǎn)換為LSTM的輸入格式,要求是數(shù)組,數(shù)組的每個(gè)元素代表某個(gè)時(shí)間戳一個(gè)Batch的數(shù)據(jù) 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最后的輸出進(jìn)行預(yù)測(cè) logits = tf.layers.dense(rnn_outputs[-1], num_classes) predicted_labels = tf.argmax(logits, axis=1) 定義損失和優(yōu)化器 # 定義損失和優(yōu)化器 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) 執(zhí)行 with tf.Session() as sess: # 初始化變量 sess.run(tf.global_variables_initializer()) 訓(xùn)練# 定義要填充的數(shù)據(jù) feed_dict = { datas_placeholder: datas, labels_placeholder: labels } print("開始訓(xùn)練") 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)) 預(yù)測(cè) print("訓(xùn)練結(jié)束,進(jìn)行預(yù)測(cè)") 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))
分享安排: 目標(biāo): 1.掌握大數(shù)據(jù)建模分析與使用方法。 2.掌握大數(shù)據(jù)平臺(tái)技術(shù)架構(gòu)。 3.掌握國內(nèi)外主流的大數(shù)據(jù)分析與BI商業(yè)智能分析解決方案。 4.掌握大數(shù)據(jù)分析在搜索引擎、廣告服務(wù)推薦、電商數(shù)據(jù)分析、金融客戶分析方面的應(yīng)用。 5.掌握主流的基于大數(shù)據(jù)Hadoop和Spark、R的大數(shù)據(jù)分析平臺(tái)架構(gòu)和實(shí)際應(yīng)用。 6.掌握基于Hadoop大數(shù)據(jù)平臺(tái)的數(shù)據(jù)挖掘和數(shù)據(jù)倉庫分布式系統(tǒng)平臺(tái)應(yīng)用,以及商業(yè)和開源的數(shù)據(jù)分析產(chǎn)品加上Hadoop平臺(tái)形成大數(shù)據(jù)分析平臺(tái)的應(yīng)用剖析。 7.掌握常見的機(jī)器學(xué)習(xí)算法。
具體內(nèi)容: 一、大數(shù)據(jù)概述:1.大數(shù)據(jù)及特點(diǎn)分析;2.大數(shù)據(jù)關(guān)健技術(shù);3.大數(shù)據(jù)計(jì)算模式;4.大數(shù)據(jù)應(yīng)用實(shí)例 二、大數(shù)據(jù)處理架構(gòu)Hadoop:1.Hadoop項(xiàng)目結(jié)構(gòu);2.Hadoop安裝與使用;3.Hadoop集群的部署與使用;4.Hadoop 代表性組件 三、分布式文件系統(tǒng)HDFS :1.HDFS體系結(jié)構(gòu);2.HDFS存儲(chǔ);3.HDFS數(shù)據(jù)讀寫過程 四、分布式數(shù)據(jù)庫HBase :1.HBase訪問接口;2.HBase數(shù)據(jù)類型;3.HBase實(shí)現(xiàn)原理;4.HBase運(yùn)行機(jī)制;5.HBase應(yīng)用 五、MapReduce :1.MapReduce體系結(jié)構(gòu);2.MapReduce工作流程;3.資源管理調(diào)度框架YARN ;4.MapReduce應(yīng)用 六、Spark :1.Spark生態(tài)與運(yùn)行架構(gòu);2.Spark SQL;3.Spark部署與應(yīng)用方式 七、IPython Notebook運(yùn)行Python Spark程序:1.Anaconda;2.IPython Notebook使用Spark;3.使用IPython Notebook在Hadoop YARN模式運(yùn)行 八、Python Spark集成開發(fā)環(huán)境 :1.Python Spark集成開發(fā)環(huán)境部署配置;2.Spark數(shù)據(jù)分析庫MLlib的開發(fā)部署 九、Python Spark決策樹二分類與多分類 :1.決策樹原理;2.大數(shù)據(jù)問題;3.決策樹二分類;4.決策樹多分類 十、Python Spark支持向量機(jī) :1.支持向量機(jī)SVM 原理與算法;2.Python Spark SVM程序設(shè)計(jì) 十一、Python Spark 貝葉斯模型 :1.樸素貝葉斯模型原理;2.Python Spark貝葉斯模型程序設(shè)計(jì) 十二、Python Spark邏輯回歸 :1.邏輯回歸原理;2.Python Spark邏輯回歸程序設(shè)計(jì) 十三、Python Spark回歸分析 :1.大數(shù)據(jù)分析;2.數(shù)據(jù)集介紹;3.Python Spark回歸程序設(shè)計(jì) 十四、Spark ML Pipeline 機(jī)器學(xué)習(xí)流程分類 :1.機(jī)器學(xué)習(xí)流程組件:StringIndexer、OneHotEncoder、VectorAssembler等 2.使用Spark ML Pipeline 機(jī)器學(xué)習(xí)流程分類程序設(shè)計(jì) 十五、Python Spark 創(chuàng)建推薦引擎 :1.推薦算法;2.推薦引擎大數(shù)據(jù)分析使用場(chǎng)景;3.推薦引擎設(shè)計(jì) 十六、項(xiàng)目實(shí)踐:1.日志分析系統(tǒng)與日志挖掘項(xiàng)目實(shí)踐;2.推薦系統(tǒng)項(xiàng)目實(shí)踐
學(xué)習(xí)可關(guān)注人工智能技術(shù)與咨詢,更多詳情可咨詢152-3187-5710(v同號(hào)),qq群:189696007。
|