tf.Graph().as_default()
with tf.Graph().as_default():
with tf.device('/gpu:'+str(GPU_INDEX)):
TensorFlow中所有計(jì)算都會(huì)被轉(zhuǎn)化為計(jì)算圖上的節(jié)點(diǎn)。是一個(gè)通過計(jì)算圖的形式來表述計(jì)算的編程系統(tǒng),每個(gè)計(jì)算都是計(jì)算圖的一個(gè)節(jié)點(diǎn),而節(jié)點(diǎn)之間的邊描述了計(jì)算之間的依賴關(guān)系。
在TensorFlow中,系統(tǒng)會(huì)自動(dòng)維護(hù)一個(gè)默認(rèn)的計(jì)算圖,通過tf.get_default_graph()函數(shù)可以獲取當(dāng)前默認(rèn)的計(jì)算圖。
如果沒有顯示創(chuàng)建一個(gè)圖的話,系統(tǒng)提供一個(gè)全局默認(rèn)的圖,默認(rèn)把所有的操作都添加到全局默認(rèn)圖中,配合with關(guān)鍵詞使用,可以只把with快中的操作添加到默認(rèn)圖中。計(jì)算圖可以通過tf.Graph.device函數(shù)來指定運(yùn)行計(jì)算的設(shè)備。
如果要用GPU跑的話要確保安裝的tensorflow是gpu版本的??梢酝ㄟ^一下方式來判斷:
import tensorflow as tf
print(tf.test.is_gpu_available())
#true為有g(shù)pu版本
session
# 創(chuàng)建本地 session
with tf.Session() as sess:
# ...
# 創(chuàng)建遠(yuǎn)程 session
with tf.Session("grpc://example.org:2222"):
# ...
session擁有和管理物理資源CPU、GPU、網(wǎng)絡(luò)連接的功能,最典型的使用方式是作為上下文管理器使用。session 使用的可選參數(shù)主要有三個(gè):target 用來控制 session 使用的硬件設(shè)備, 如果使用空值,那么這個(gè) session 就只會(huì)使用本地的設(shè)備,如果使用 grpc:// URL,那么就會(huì)使用這臺(tái)服務(wù)器控制的所有設(shè)備。graph 用來控制該 session 運(yùn)行哪個(gè)計(jì)算圖,如果為空,那么該 session 就只會(huì)使用當(dāng)前的默認(rèn) Graph,如果使用多個(gè)計(jì)算圖,就可以在這里指定。config 用來 指定一個(gè) tf.ConfigProto 格式的 session 運(yùn)行配置,比如說它里面包含的 allow_soft_placement 如果指定為 TRUE,那么 session 就會(huì)自動(dòng)把不適合在 GPU 上運(yùn)行的 OP 全部放到 CPU 上運(yùn)行;cluster_def 是分布式運(yùn)行時(shí)候需要指定的配置;gpu_options.allow_growth 設(shè)置會(huì)使得程序在開始時(shí)候逐步的增長(zhǎng) GPU 顯存使用量,而不是一開始就最大化的使用所有顯存。第一個(gè)和第三個(gè)配置是經(jīng)常用到的。
tf.Session.run 是運(yùn)行 OP 和獲取 tensor 的值的主要方式,可以一次性傳入多個(gè) OP 和 tensor 給它,然后TensorFlow 會(huì)自動(dòng)執(zhí)行所有需要的 OP 來得到結(jié)果。
tensorflow.placeholder()
placeholder是占位符的意思,在tensorflow中類似于函數(shù)參數(shù),在執(zhí)行的時(shí)候再賦具體的值。
Tensorflow的設(shè)計(jì)理念稱之為計(jì)算流圖,在編寫程序時(shí),首先構(gòu)筑整個(gè)系統(tǒng)的graph,代碼并不會(huì)直接生效,這一點(diǎn)和python的其他數(shù)值計(jì)算庫(如Numpy等)不同,graph為靜態(tài)的,類似于docker中的鏡像。然后,在實(shí)際的運(yùn)行時(shí),啟動(dòng)一個(gè)session,程序才會(huì)真正的運(yùn)行。這樣做的好處就是:避免反復(fù)地切換底層程序?qū)嶋H運(yùn)行的上下文,tensorflow幫你優(yōu)化整個(gè)系統(tǒng)的代碼。我們知道,很多python程序的底層為C語言或者其他語言,執(zhí)行一行腳本,就要切換一次,是有成本的,tensorflow通過計(jì)算流圖的方式,幫你優(yōu)化整個(gè)session需要執(zhí)行的代碼,還是很有優(yōu)勢(shì)的。placeholder()函數(shù)是在神經(jīng)網(wǎng)絡(luò)構(gòu)建graph的時(shí)候在模型中的占位,此時(shí)并沒有把要輸入的數(shù)據(jù)傳入模型,它只會(huì)分配必要的內(nèi)存。等建立session,在會(huì)話中,運(yùn)行模型的時(shí)候通過feed_dict()函數(shù)向占位符喂入數(shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-714422.html
tf.summary
tensorboard作為一款可視化神奇,是學(xué)習(xí)tensorflow時(shí)模型訓(xùn)練以及參數(shù)可視化的法寶。而在訓(xùn)練過程中,主要用到了tf.summary()的各類方法,能夠保存訓(xùn)練過程以及參數(shù)分布圖并在tensorboard顯示。文章來源地址http://www.zghlxwxcb.cn/news/detail-714422.html
到了這里,關(guān)于TensorFlow學(xué)習(xí)筆記(未完待續(xù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!