Tensorflow Session 配置選項(xiàng)解析

在 Tensorflow 中需要通過創(chuàng)建 Session 類實(shí)例來為當(dāng)前計(jì)算圖注冊會話,然后通過會話的 run 方法或者是 tf.Tensor.eval 來執(zhí)行計(jì)算,得到所需操作的輸出。

通常而言,在平時(shí)的學(xué)習(xí)和 demo 測試中采用 Session 的默認(rèn)設(shè)置已經(jīng)足夠了。但是當(dāng)我們需要編寫多 GPU 程序還要保證程序的可移植性,又或者因?yàn)樯a(chǎn)需要而要求更準(zhǔn)確地控制會話的時(shí)候就涉及到 Session 的配置。

Session 可以通過 ConfigProto 類來進(jìn)行配置。ConfigProto 包含有許多屬性,能夠配置并行的線程數(shù)、GPU 的分配策略、設(shè)備日記等等屬性,更多屬性詳情請自行參考 Tensorflow 官網(wǎng) API 介紹。

在這眾多的屬性當(dāng)中,最常用的一般是 log_device_placementallow_soft_placement 。配置的設(shè)置方式如下:

config = tf.ConfigProto(log_device_placement=True,
                        allow_soft_placement=True)
sess = tf.Session(config=config)

allow_soft_placement

allow_soft_placement 是布爾類型的屬性,默認(rèn)情況下是 False 。當(dāng)將它的值設(shè)置為 True 的時(shí)候,在以下任意一條條件滿足時(shí),程序會將原先在 GPU 上的計(jì)算遷移到 CPU 中完成:

  1. 運(yùn)算無法在 GPU 上執(zhí)行
  2. 沒有 GPU 資源
  3. 運(yùn)算輸入包含對 CPU 計(jì)算結(jié)果的引用

考慮到不同機(jī)器中的 GPU 驅(qū)動版本、數(shù)量等都可能存在差異,因此為了提升程序的可移植性,可以將該選項(xiàng)設(shè)置為 True ,從而避免了在其它機(jī)器上運(yùn)行程序時(shí)因?yàn)?GPU 支持問題而直接拋出異常。

log_device_placement

log_device_placement 也是一個(gè)布爾型屬性,默認(rèn)為 False 。將該屬性設(shè)置為 True 的時(shí)候,程序日志中將記錄計(jì)算圖中每個(gè)節(jié)點(diǎn)是在哪個(gè)設(shè)備中進(jìn)行計(jì)算的。在編寫與測試程序的過程中設(shè)置為 True 可以方便調(diào)試,而在生產(chǎn)中可以將該屬性設(shè)置為 False 以減少日志占用的空間。

更多閱讀

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 歲月靜好,伊人自老。悠悠流年,劃過臉龐。誰偷染了你的發(fā)絲,還是你,早已不是記憶中的那個(gè)你。說得出來的改變,說不出來...
    梧恩雨閱讀 3,672評論 0 3
  • 自古書生多遺恨, 從來霸王少躊齪。 縱使天意高難問, 也赴周廷細(xì)細(xì)度。 風(fēng)云際會男兒色, 碧血丹心真英模。 尋遍天...
    九哥的歌閱讀 223評論 1 2

友情鏈接更多精彩內(nèi)容