摘要:輸入采用占位符,模型接收任意長(zhǎng)度向量,隨時(shí)間計(jì)算數(shù)據(jù)流圖所有輸出總和,采用名稱作用域合理劃分?jǐn)?shù)據(jù)流圖,每次運(yùn)行保存數(shù)據(jù)流圖輸出累加均值到磁盤。與交換工作流分開,獨(dú)立名稱作用域包含對(duì)象,存儲(chǔ)輸出累加和,記錄數(shù)據(jù)流圖運(yùn)行次數(shù)。
輸入采用占位符,模型接收任意長(zhǎng)度向量,隨時(shí)間計(jì)算數(shù)據(jù)流圖所有輸出總和,采用名稱作用域合理劃分?jǐn)?shù)據(jù)流圖,每次運(yùn)行保存數(shù)據(jù)流圖輸出、累加、均值到磁盤。
[None]代表任意長(zhǎng)度向量,[]代表標(biāo)量。update環(huán)節(jié)更新各Variable對(duì)象以及將數(shù)據(jù)傳入TensorBoard匯總Op。與交換工作流分開,獨(dú)立名稱作用域包含Variable對(duì)象,存儲(chǔ)輸出累加和,記錄數(shù)據(jù)流圖運(yùn)行次數(shù)。獨(dú)立名稱作用域包含TensorBoard匯總數(shù)據(jù),tf.scalar_summary Op。匯總數(shù)據(jù)在Variable對(duì)象更新完成后才添加。
構(gòu)建數(shù)據(jù)流圖。
導(dǎo)入TensorFlow庫(kù)。Graph類構(gòu)造方法tf.Graph(),顯式創(chuàng)建Graph對(duì)象。兩個(gè)“全局”Variable對(duì)象,追蹤模型運(yùn)行次數(shù),追蹤模型所有輸出累加和。與其他節(jié)點(diǎn)區(qū)分開,放入獨(dú)立名稱作用域。trainable=False設(shè)置明確指定Variable對(duì)象只能手工設(shè)置。
模型核心的變換計(jì)算,封裝到名稱作用域"transformation",又劃分三個(gè)子名稱作用域"input"、"intermediate_layer"、"output"。.multiply、.add只能接收標(biāo)量參數(shù),.reduce_prod、. reduce_sum可以接收向量參數(shù)。
在"update"名稱作用域內(nèi)更新Variable對(duì)象。.assign_add實(shí)現(xiàn)Variable對(duì)象遞增。
在"summaries"名稱作用域內(nèi)匯總數(shù)據(jù)供TensorBoard用。.cast()做數(shù)據(jù)類型轉(zhuǎn)換。.summary.scalar()做標(biāo)量數(shù)據(jù)匯總。
在"global_ops"名稱作用域創(chuàng)建全局Operation(Op)。初始化所有Variable對(duì)象。合并所有匯總數(shù)據(jù)。
運(yùn)行數(shù)據(jù)流圖。
.Session()啟動(dòng)Session對(duì)象,graph屬性加載Graph對(duì)象,.summary.FileWriter()啟動(dòng)FileWriter對(duì)象,保存匯總數(shù)據(jù)。
初始化Variable對(duì)象。
創(chuàng)建運(yùn)行數(shù)據(jù)流圖輔助函數(shù),傳入向量,運(yùn)行數(shù)據(jù)流圖,保存匯總數(shù)據(jù)。創(chuàng)建feed_dict參數(shù)字典,以input_tensor替換a句柄的tf.placeholder節(jié)點(diǎn)值。使用feed_dict運(yùn)行output不關(guān)心存儲(chǔ),運(yùn)行increment_step保存到step,運(yùn)行merged_summaries Op保存到summary。添加匯總數(shù)據(jù)到FileWriter對(duì)象,global_step參數(shù)隨時(shí)間圖示折線圖橫軸。
變換向量長(zhǎng)度多次調(diào)用運(yùn)行數(shù)據(jù)流圖輔助函數(shù)。.flush()把匯總數(shù)據(jù)寫入磁盤。
查看數(shù)據(jù)流圖。
Graph標(biāo)簽,變換運(yùn)算流入update方框,為summaries、variables提供輸入,global_ops包含變換計(jì)算非關(guān)鍵運(yùn)算。輸入層、中間層、輸出層分離。
Scalars標(biāo)簽,summary.scalar對(duì)象標(biāo)簽查看不同時(shí)間點(diǎn)匯總數(shù)據(jù)變化。
import tensorflow as tf#導(dǎo)入TensorFlow庫(kù) #構(gòu)建數(shù)據(jù)流圖 graph = tf.Graph()#顯式創(chuàng)建Graph對(duì)象 with graph.as_default():#設(shè)為默認(rèn)Graph對(duì)象 with tf.name_scope("variables"):#創(chuàng)建Variable對(duì)象名稱作用域 global_step = tf.Variable(0, dtype=tf.int32, trainable=False, name="global_step")#記錄數(shù)據(jù)流圖運(yùn)行次數(shù)的Variable對(duì)象,初值為0,數(shù)據(jù)類型為32位整型,不可自動(dòng)修改,以global_step標(biāo)識(shí) total_output = tf.Variable(0.0, dtype=tf.float32, trainable=False, name="total_output")#追蹤模型所有輸出累加和的Variable對(duì)象,初值為0.0,數(shù)據(jù)類型為32位浮點(diǎn)型,不可自動(dòng)修改,以total_output標(biāo)識(shí) with tf.name_scope("transformation"):#創(chuàng)建變換計(jì)算Op名稱作用域 with tf.name_scope("input"):#創(chuàng)建獨(dú)立輸入層名稱作用域 a = tf.placeholder(tf.float32, shape=[None], name="input_placeholder_a")#創(chuàng)建占位符,接收一個(gè)32位浮點(diǎn)型任意長(zhǎng)度的向量作為輸入,以input_placeholder_a標(biāo)識(shí) with tf.name_scope("intermediate_layer"):#創(chuàng)建獨(dú)立中間層名稱作用域 b = tf.reduce_prod(a, name="product_b")#創(chuàng)建創(chuàng)建歸約乘積Op,接收張量輸入,輸出張量所有分量(元素)的乘積,以product_b標(biāo)識(shí) c = tf.reduce_sum(a, name="sum_c")#創(chuàng)建創(chuàng)建歸約求和Op,接收張量輸入,輸出張量所有分量(元素)的求和,以sum_c標(biāo)識(shí) with tf.name_scope("output"):#創(chuàng)建獨(dú)立輸出層名稱作用域 output = tf.add(b, c, name="output")#創(chuàng)建創(chuàng)建求和Op,接收兩個(gè)標(biāo)量輸入,輸出標(biāo)量求和,以output標(biāo)識(shí) with tf.name_scope("update"): update_total = total_output.assign_add(output)#用最新的輸出更新Variable對(duì)象total_output increment_step = global_step.assign_add(1)#增1更新Variable對(duì)象global_step,記錄數(shù)據(jù)流圖運(yùn)行次數(shù) with tf.name_scope("summaries"):#創(chuàng)建數(shù)據(jù)匯總Op名稱作用域 avg = tf.div(update_total, tf.cast(increment_step, tf.float32), name="average")#計(jì)算平均值,輸出累加和除以數(shù)據(jù)流圖運(yùn)行次數(shù),把運(yùn)行次數(shù)數(shù)據(jù)類型轉(zhuǎn)換為32位浮點(diǎn)型,以average標(biāo)識(shí) tf.summary.scalar(b"output_summary",output)#創(chuàng)建輸出節(jié)點(diǎn)標(biāo)量數(shù)據(jù)統(tǒng)計(jì)匯總,以output_summary標(biāo)識(shí) tf.summary.scalar(b"total_summary",update_total)#創(chuàng)建輸出累加求和標(biāo)量數(shù)據(jù)統(tǒng)計(jì)匯總,以total_summary標(biāo)識(shí) tf.summary.scalar(b"average_summary",avg)#創(chuàng)建平均值標(biāo)量數(shù)據(jù)統(tǒng)計(jì)匯總,以average_summary標(biāo)識(shí) with tf.name_scope("global_ops"):#創(chuàng)建全局Operation(Op)名稱作用域 init = tf.global_variables_initializer()#創(chuàng)建初始化所有Variable對(duì)象的Op merged_summaries = tf.summary.merge_all()#創(chuàng)建合并所有匯總數(shù)據(jù)的Op #運(yùn)行數(shù)據(jù)流圖 sess = tf.Session(graph=graph)#用顯式創(chuàng)建Graph對(duì)象啟動(dòng)Session會(huì)話對(duì)象 writer = tf.summary.FileWriter("./improved_graph", graph)#啟動(dòng)FileWriter對(duì)象,保存匯總數(shù)據(jù) sess.run(init)#運(yùn)行Variable對(duì)象初始化Op def run_graph(input_tensor):#定義數(shù)據(jù)注圖運(yùn)行輔助函數(shù) """ 輔助函數(shù):用給定的輸入張量運(yùn)行數(shù)據(jù)流圖, 并保存匯總數(shù)據(jù) """ feed_dict = {a: input_tensor}#創(chuàng)建feed_dict參數(shù)字典,以input_tensor替換a句柄的tf.placeholder節(jié)點(diǎn)值 _, step, summary = sess.run([output, increment_step, merged_summaries], feed_dict=feed_dict)#使用feed_dict運(yùn)行output不關(guān)心存儲(chǔ),運(yùn)行increment_step保存到step,運(yùn)行merged_summaries Op保存到summary writer.add_summary(summary, global_step=step)#添加匯總數(shù)據(jù)到FileWriter對(duì)象,global_step參數(shù)時(shí)間圖示折線圖橫軸 #用不同的輸入用例運(yùn)行數(shù)據(jù)流圖 run_graph([2,8]) run_graph([3,1,3,3]) run_graph([8]) run_graph([1,2,3]) run_graph([11,4]) run_graph([4,1]) run_graph([7,3,1]) run_graph([6,3]) run_graph([0,2]) run_graph([4,5,6]) writer.flush()#將匯總數(shù)據(jù)寫入磁盤 writer.close()#關(guān)閉FileWriter對(duì)象,釋放資源 sess.close()#關(guān)閉Session對(duì)象,釋放資源
參考資料:
《面向機(jī)器智能的TensorFlow實(shí)踐》
歡迎加我微信交流:qingxingfengzi
我的微信公眾號(hào):qingxingfengzigz
我老婆張幸清的微信公眾號(hào):qingqingfeifangz
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/44364.html
摘要:張量的命名形式,為節(jié)點(diǎn)的名稱,表示當(dāng)前張量來(lái)自來(lái)自節(jié)點(diǎn)的第幾個(gè)輸出。,要求的輸入對(duì)象是一個(gè)但是它的輸出是一個(gè)數(shù)組輸出其他基本概念常量變量占位符常量中使用常量很簡(jiǎn)單,如,。返回的的類型返回的的形狀的名字布爾值,用于驗(yàn)證值的形狀。 showImg(https://segmentfault.com/img/bVbvlKO?w=4938&h=1679);(代碼基于tensorflow 1.14...
好的,下面是一篇關(guān)于TensorFlow編程技術(shù)的文章: TensorFlow是一種非常流行的機(jī)器學(xué)習(xí)框架,它被廣泛應(yīng)用于各種領(lǐng)域,包括計(jì)算機(jī)視覺(jué)、自然語(yǔ)言處理、語(yǔ)音識(shí)別等。如果你想學(xué)習(xí)TensorFlow,那么你需要掌握一些基本的編程技術(shù)。在這篇文章中,我們將介紹一些TensorFlow編程技術(shù),幫助你更好地理解和使用這個(gè)強(qiáng)大的框架。 1. 張量(Tensor) TensorFlow中最基...
閱讀 2984·2021-10-12 10:17
閱讀 1588·2021-09-01 11:38
閱讀 1080·2019-08-30 15:44
閱讀 3478·2019-08-26 18:36
閱讀 506·2019-08-26 13:25
閱讀 1884·2019-08-26 10:29
閱讀 2834·2019-08-23 15:58
閱讀 758·2019-08-23 12:59