當前位置:
首頁 > 最新 > TensorFlow如何通過tf.device函數來指定運行每一個操作的設備?

TensorFlow如何通過tf.device函數來指定運行每一個操作的設備?

TensorFlow程序可以通過tf.device函數來指定運行每一個操作的設備。

這個設備可以是本地的CPU或者GPU,也可以是某一台遠程的伺服器。

TensorFlow會給每一個可用的設備一個名稱,tf.device函數可以通過設備的名稱,來指定執行運算的設備。比如CPU在TensorFlow中的名稱為/cpu:0。

在默認情況下,即使機器有多個CPU,TensorFlow也不會區分它們,所有的CPU都使用/cpu:0作為名稱。

–而一台機器上不同GPU的名稱是不同的,第n個GPU在TensorFlow中的名稱為/gpu:n。

–比如第一個GPU的名稱為/gpu:0,第二個GPU名稱為/gpu:1,以此類推。

–TensorFlow提供了一個快捷的方式,來查看運行每一個運算的設備。

–在生成會話時,可以通過設置log_device_placement參數來列印運行每一個運算的設備。

請看下面例子:

下面程序展示了log_device_placement參數的使用,在機器上直接運行代碼:

–import tensorflowas tf

–a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a')

–b = tf.constant([1.0, 2.0, 3.0], shape=[3], name='b')

–c = a + b

–# 通過log_device_placement參數來輸出運行每一個運算的設備。

–sess= tf.Session(config=tf.ConfigProto(log_device_placement=True))

–print sess.run(c)

在以上代碼中,TensorFlow程序生成會話時加入了參數log_device_placement=True,所以程序會將運行每一個操作的設備輸出到屏幕。

–除了可以看到最後的計算結果之外,還可以看到類似「add: /job:localhost/replica:0/task:0/cpu:0」這樣的輸出

–這些輸出顯示了執行每一個運算的設備。比如加法操作add是通過CPU來運行的,因為它的設備名稱中包含了/cpu:0。

–在配置好GPU環境的TensorFlow中,如果操作沒有明確地指定運行設備,那麼TensorFlow會優先選擇GPU。

在沒有GPU的機器上運行,以上代碼得到以下輸出:

–Device mapping: no known devices.

–add: /job:localhost/replica:0/task:0/cpu:0

–b: /job:localhost/replica:0/task:0/cpu:0

–a: /job:localhost/replica:0/task:0/cpu:0

–[ 2. 4. 6.]

–'''


點擊展開全文

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 中科院計算所職業學校 的精彩文章:

TAG:中科院計算所職業學校 |