版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
張明副教授人工智能原理:基于Python語言和TensorFlow第四章:TensorFlow運作方式數(shù)據(jù)的準(zhǔn)備和下載圖表構(gòu)建與推理損失與訓(xùn)練狀態(tài)檢查與可視化狀態(tài)檢查與可視化評估模型評估圖表的構(gòu)建與輸出4.1:數(shù)據(jù)的準(zhǔn)備和下載以MNIST為例。4.1:數(shù)據(jù)的準(zhǔn)備和下載1.提供Python源代碼用于自動下載和安裝這個數(shù)據(jù)集。********************************************************************************importtensorflow.examples.tutorials.mnist.input_datamnist=input_data.read_data_sets("MNIST_data/",one_hot=True)********************************************************************************2.確認(rèn)并解壓縮文件********************************************************************************data_sets=input_data.read_data_sets(FLAGS.train_dir,FLAGS.fake_data)********************************************************************************第四章:TensorFlow運作方式數(shù)據(jù)的準(zhǔn)備和下載圖表構(gòu)建與推理損失與訓(xùn)練狀態(tài)檢查與可視化狀態(tài)檢查與可視化評估模型評估圖表的構(gòu)建與輸出4.2:圖表構(gòu)建與推理1圖表構(gòu)建2推理運行mnist.py文件了,經(jīng)過三階段的模式函數(shù)操作:inference(),loss()和training(),圖表就構(gòu)建完成了。(1)inference()——盡可能地構(gòu)建好圖表,滿足促使神經(jīng)網(wǎng)絡(luò)向前反饋并做出預(yù)測的要求。(2)loss()——往inference圖表中添加生成損失(loss)所需要的操作(ops)。(3)training()——往損失圖表中添加計算并應(yīng)用梯度(gradients)所需的操作。在run_training()這個函數(shù)的一開始,是一個Python語言中的with命令,這個命令表明所有已經(jīng)構(gòu)建的操作都要與默認(rèn)的tf.Graph全局實例關(guān)聯(lián)起來,代碼如下所示。withtf.Graph().as_default():tf.Graph實例是一系列可以作為整體執(zhí)行的操作。TensorFlow的大部分場景只需要依賴默認(rèn)圖表一個實例即可。4.2:圖表構(gòu)建與推理1圖表構(gòu)建2推理inference()函數(shù)會盡可能地構(gòu)建圖表,做到返回包含了預(yù)測結(jié)果(outputprediction)的張量。4.3:損失與訓(xùn)練1損失2訓(xùn)練1:損失loss()函數(shù)通過添加所需的損失操作,進(jìn)一步構(gòu)建圖表。首先,labels_placeholer中的值將被編碼為一個含有1-hotvalues的張量。例如,如果類標(biāo)識符為3,那么該值就會被轉(zhuǎn)換為[0,0,0,1,0,0,0,0,0,0],代碼如下所示。**************************************************************************************batch_size=tf.size(labels)labels=tf.expand_dims(labels,1)indices=tf.expand_dims(tf.range(0,batch_size,1),1)concated=tf.concat(1,[indices,labels])onehot_labels=tf.sparse_to_dense(concated,tf.pack([batch_size,NUM_CLASSES]),1.0,0.0)**************************************************************************************添加一個tf.nn.softmax_cross_entropy_with_logits操作,用來比較inference()函數(shù)與1-hot標(biāo)簽所輸出的logits張量,代碼如下所示。**************************************************************************************cross_entropy=tf.nn.softmax_cross_entropy_with_logits(logits,onehot_labels,name='xentropy')**************************************************************************************使用tf.reduce_mean函數(shù),計算batch維度(第一維度)下交叉熵(crossentropy)的平均值,將該值作為總損失,代碼如下所示**************************************************************************************loss=tf.reduce_mean(cross_entropy,name='xentropy_mean')**************************************************************************************最后,返回包含了損失值的張量。4.3:損失與訓(xùn)練1損失2訓(xùn)練2:訓(xùn)練TensorFlow有大量內(nèi)置的優(yōu)化算法。這個例子中,我們用梯度下降(gradientdescent)法讓交叉熵下降,步長為0.01。函數(shù)從loss()函數(shù)中獲取損失張量,將其交給tf.scalar_summary,后者在SummaryWriter配合使用時,可以向事件文件(eventsfile)中生成匯總值(summaryvalues)。**************************************************************************************tf.scalar_summary(,loss)**************************************************************************************返回的train_step操作對象,在運行時會使用梯度下降來更新參數(shù)**************************************************************************************foriinrange(1000):batch=mnist.train.next_batch(50)train_step.run(feed_dict={x:batch[0],y_:batch[1]})**************************************************************************************實例化一個tf.train.GradientDescentOptimizer,負(fù)責(zé)按照所要求的學(xué)習(xí)效率(learningrate)應(yīng)用梯度下降法,代碼如下所示。**************************************************************************************optimizer=tf.train.GradientDescentOptimizer(FLAGS.learning_rate)**************************************************************************************train_op操作**************************************************************************************global_step=tf.Variable(0,name='global_step',trainable=False)train_op=optimizer.minimize(loss,global_step=global_step)**************************************************************************************程序返回包含了訓(xùn)練操作(trainingop)輸出結(jié)果的張量。4.4:狀態(tài)檢查與可視化1
狀態(tài)檢查2狀態(tài)可視化在運行sess.run()函數(shù)時,要在代碼中明確其需要獲取的兩個值:[train_op,loss],代碼如下所示。**************************************************************************************forstepinxrange(FLAGS.max_steps):feed_dict=fill_feed_dict(data_sets.train,images_placeholder,labels_placeholder)_,loss_value=sess.run([train_op,loss],feed_dict=feed_dict)**************************************************************************************假設(shè)訓(xùn)練一切正常,沒有出現(xiàn)NaN,訓(xùn)練循環(huán)會每隔100個訓(xùn)練步驟打印一行簡單的狀態(tài)文本,告知用戶當(dāng)前的訓(xùn)練狀態(tài),代碼如下所示。**************************************************************************************ifstep%100==0:print'Step%d:loss=%.2f(%.3fsec)'%(step,loss_value,duration)**************************************************************************************4.4:狀態(tài)檢查與可視化1
狀態(tài)檢查2狀態(tài)可視化為了釋放TensorBoard所使用的事件文件(eventsfile),所有的即時數(shù)據(jù)都要在圖表構(gòu)建階段合并至一個操作(op)中,代碼如下所示。**************************************************************************************summary_op=tf.merge_all_summaries()**************************************************************************************為實例化一個tf.train.SummaryWriter,用于寫入包含了圖表本身和即時數(shù)據(jù)具體值的事件文件,代碼如下所示。**************************************************************************************summary_writer=tf.train.SummaryWriter(FLAGS.train_dir,graph_def=sess.graph_def)**************************************************************************************每次運行summary_op時,都會往事件文件中寫入最新的即時數(shù)據(jù),函數(shù)的輸出會傳入事件文件讀寫器(writer)的add_summary()函數(shù),代碼如下所示。**************************************************************************************summary_str=sess.run(summary_op,feed_dict=feed_dict)summary_writer.add_summary(summary_str,step)**************************************************************************************事件文件寫入完畢之后,可以在訓(xùn)練文件夾中打開一個TensorBoard,查看即時數(shù)據(jù)的情況,如圖所示。TensorBoard中匯總數(shù)據(jù)(summarydata)的大體生命周期如下。首先,創(chuàng)建你想?yún)R總數(shù)據(jù)的TensorFlow圖,然后選擇你想在哪個節(jié)點進(jìn)行匯總(summary)操作。然后,你可以執(zhí)行合并命令,它會依據(jù)特定步驟將所有數(shù)據(jù)生成一個序列化的Summaryprotobuf對象。最后,為了將匯總數(shù)據(jù)寫入磁盤,需要將匯總的protobuf對象傳遞給tf.train.SummaryWriter。4.5:評估模型我們的模型性能如何呢?4.6:評估圖表的構(gòu)建與輸出1評估圖表的構(gòu)建2評估圖表的輸出調(diào)用get_data(train=False)函數(shù),抓取測試數(shù)據(jù)集。**************************************************************************************test_all_images,test_all_labels=get_data(train=False)**************************************************************************************在進(jìn)入訓(xùn)練循環(huán)之前,我們應(yīng)該先調(diào)用mnist.py文件中的evaluation函數(shù),傳入的logits和標(biāo)簽參數(shù)要與loss函數(shù)的一致。這樣做是為了先構(gòu)建Eval操作。**************************************************************************************eval_correct=mnist.evaluation(logits,labels_placeholder)**************************************************************************************把K的值設(shè)置為1,也就是只有在預(yù)測是真的標(biāo)簽時,才判定它是正確的把K的值設(shè)置為1,也就是只有在預(yù)測是真的標(biāo)簽時,才判定它是正確的。************************************************************************************eval_correct=tf.nn.in_top_k(logits,labels,1)************************************************************************************4.6:評估圖表的構(gòu)建與輸出1評估圖表的構(gòu)建2評估圖表的輸出用給定的數(shù)據(jù)集評估模型**********************************************************************
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度綠色建筑政策支持場外工程合同規(guī)范文本2篇
- 鄭州西亞斯學(xué)院《別墅建筑空間設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江農(nóng)業(yè)商貿(mào)職業(yè)學(xué)院《中級韓國語視聽說》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年高科技實驗室場地租賃及配套設(shè)施供應(yīng)合同2篇
- 創(chuàng)傷科護(hù)士工作總結(jié)
- 美容美發(fā)店話務(wù)員工作總結(jié)
- 飛行器材租賃合約三篇
- 商務(wù)中心保安工作總結(jié)
- 輸液外滲知識培訓(xùn)課件
- 網(wǎng)絡(luò)科技行業(yè)的美工工作總結(jié)
- (主城一診)重慶市2025年高2025屆高三學(xué)業(yè)質(zhì)量調(diào)研抽測 (第一次)英語試卷(含答案)
- 中國建材集團(tuán)有限公司招聘筆試沖刺題2025
- 2024年馬克思主義基本原理知識競賽試題70題(附答案)
- 2024年中國機(jī)織濾布市場調(diào)查研究報告
- 2024年湖北省中考物理真題含解析
- 荔枝病蟲害防治技術(shù)規(guī)程
- 貴州業(yè)主大會議事規(guī)則示范文本模板
- 2024年內(nèi)容創(chuàng)作者與平臺合作協(xié)議2篇
- 《實驗性研究》課件
- 中國革命戰(zhàn)爭的戰(zhàn)略問題(全文)
- 人教版小學(xué)數(shù)學(xué)一年級上冊小學(xué)生口算天天練
評論
0/150
提交評論