TensorFlow实验(2)
實(shí)驗(yàn)3-4 數(shù)據(jù)結(jié)構(gòu)-張量
1)已知兩個(gè)張量[1,3,5,7]和[2,4,4,8],編寫一個(gè)模型,計(jì)算兩個(gè)張量的加法,輸出結(jié)果,并在tensorboard中顯示
2)已知張量[1,2,3,4,5,6,7,8,9,10,11,12]有12個(gè)元素,利用tf.reshape()將其形狀轉(zhuǎn)換為[2,3,2]的三維張量
要求:程序+截圖
1)已知兩個(gè)張量[1,3,5,7]和[2,4,4,8],編寫一個(gè)模型,計(jì)算兩個(gè)張量的加法,輸出結(jié)果,并在tensorboard中顯示
①第一步
TensorBoard是TensorFlow自帶的一個(gè)強(qiáng)大的可視化工具,也是一個(gè)web應(yīng)用程序套件。通過TensorFlow程序運(yùn)行過程中產(chǎn)生的日志文件可視化TensorFlow的程序運(yùn)行狀態(tài),它與TensorFlow跑在兩個(gè)不同的進(jìn)程中。
啟動(dòng)tensorboard:
打開anaconda prompt:
激活環(huán)境activate tensorflow
切換到根目錄:cd /
切換到日志存放的目錄:cd log
查看文件:dir
啟動(dòng)tensorboard:tensorboard --logdir=C:\log
TensorBoard目前支持7種可視化,即SCALARS、IMAGES、AUDIO、GRAPHS、
DISTRIBUTIONS、HISTOGRAMS、EMBEDDINGS,這七種可視化的主要功能如下:
lSCALARS:展示訓(xùn)練過程中的準(zhǔn)確率、損失值、權(quán)重/偏置的變化情況
lIMAGES:展示訓(xùn)練過程中的圖像
lAUDIO:展示訓(xùn)練過程中的音頻
lGRAPHS:展示模型的數(shù)據(jù)流圖,以及訓(xùn)練在各個(gè)設(shè)備上消耗的內(nèi)存和時(shí)間
lDISTRIBUTIONS:展示訓(xùn)練過程中記錄的數(shù)據(jù)的分布圖
lHISTOGRAMS:展示訓(xùn)練過程中記錄的數(shù)據(jù)的柱狀圖
lEMBEDDINGS:展示此向量后的投影分布
計(jì)算圖的概念
計(jì)算圖實(shí)際上描述的是需要依次完成的計(jì)算單元以及這些計(jì)算單元之間的相互依賴關(guān)系。由一組節(jié)點(diǎn)和一組有向邊構(gòu)成。
①每一個(gè)計(jì)算都被稱為節(jié)點(diǎn)(operation,簡(jiǎn)稱op)
②節(jié)點(diǎn)之間的邊描述了計(jì)算之間的依賴關(guān)系
③一個(gè)節(jié)點(diǎn)獲得0 個(gè)或多個(gè)張量,產(chǎn)生0 個(gè)或多個(gè)張量
計(jì)算圖描述了一組需要依次序完成的計(jì)算單元以及這些計(jì)算單元之間相互依賴的關(guān)系。圖中的節(jié)點(diǎn)表示某一具體的計(jì)算單元,如張量以及張量之間的乘積,點(diǎn)積等。
計(jì)算圖中的節(jié)點(diǎn)就是操作(Operation)
一次加法是一個(gè)操作
一次乘法是一個(gè)操作
構(gòu)建一些變量的初始值也是一個(gè)操作
每個(gè)運(yùn)算操作都有屬性,它在構(gòu)建圖的時(shí)候就需要確定下來
操作也可以和計(jì)算設(shè)備綁定,指定操作在某個(gè)設(shè)備上執(zhí)行
操作之間存在順序關(guān)系,這些操作之間的依賴就是“邊”
如果操作A的輸入是操作B執(zhí)行的結(jié)果,那么這個(gè)操作A就依賴于操作B。
TensorBoard的啟動(dòng):
不需要額外安裝,安裝TensorFlow時(shí)已自動(dòng)完成。
在Anaconda Prompt中先進(jìn)入日志存放的目錄,再運(yùn)行TensorBoard,并將日志的地址指向程
序日志輸出的地址,命令為:tensorboard--logdir= /path/log(路徑自己定)
啟動(dòng)tensorboard服務(wù)的端口默認(rèn)為為6006,
通過--port參數(shù)可以改變啟動(dòng)服務(wù)的端口
②第二步
import tensorflow as tf #清除default graph和不斷增加的節(jié)點(diǎn) tf.reset_default_graph()#logdir改為自己機(jī)器上的合適路徑 logdir = 'C:/log' #定義一個(gè)簡(jiǎn)單的計(jì)算圖,實(shí)現(xiàn)兩個(gè)張量的加法 a = tf.constant([1,3,5,7],dtype = tf.int32) b = tf.constant([2,4,4,8],dtype = tf.int32) result = tf.add(a,b) with tf.Session() as sess:print(sess.run(result)) #生成一個(gè)寫日志的writer,并將當(dāng)前的TensorFlow計(jì)算圖寫入日志 writer = tf.summary.FileWriter(logdir,tf.get_default_graph()) writer.close()③第三步
TensorBoard是一個(gè)在本地啟動(dòng)的服務(wù),啟動(dòng)完成后在瀏覽器輸入網(wǎng)址:http://localhost:6006(一般都是電腦名稱)即可進(jìn)行訪問。
查看TensorBoard內(nèi)所執(zhí)行完畢的計(jì)算圖
?
2)已知張量[1,2,3,4,5,6,7,8,9,10,11,12]有12個(gè)元素,利用tf.reshape()將其形狀轉(zhuǎn)換為[2,3,2]的三維張量
import tensorflow as tf #導(dǎo)入tensorflow類庫,別名為tf #定義c1是一維張量,共有12個(gè)元素 c1 = tf.constant([1,2,3,4,5,6,7,8,9,10,11,12],dtype = tf.float32,name = "c1") c2 = tf.reshape(c1,[2,3,2]) with tf.Session() as sess:sess.run(tf.global_variables_initializer())print(sess.run(c1))print(sess.run(c2))?
總結(jié)
以上是生活随笔為你收集整理的TensorFlow实验(2)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python和c混合编程 gil,如何在
- 下一篇: c++ file* 句柄泄漏_C++核心