假設我有以下圖表。
- X3
和Z
是我關心的價值觀。
- X
和Y
是輸入。在每個不同的。迭代,未來的價值和X
和Y
形狀是不同的,所以我認爲他們多是placeholder
- 的情況是,我需要在不同的時間點運行兩次此圖以獲得X3
和Z
異步。Tensorflow,如何保留中間節點值並重用它們
+---+ op: +1 op: *3
| X +------------> X_1 +-----------> X3 +---+
+---+ + + | Y |
| | +-+-+
| op:add |
| | |
| | |
| op: add v op:add |
+-------------> <------------+
Z
在較早的時間點,我得到一個輸入X
(比如X=7
,我不知道什麼是Y
是在這一刻)。我想看看X3
的價值。所以我執行sess.run([X3], {X:7})
,然後按預期返回24
。
在稍後的時間點,我得到另一個輸入Y
(比如Y=8
),這個時候我只想看看節點Z
。但重點是我必須執行sess.run([Z], {X:7, Y:8})
才能得到結果。
問題是,對於以後的運行,我必須再次輸入X
來重新計算中間節點X_1
和X3
。它計算流量X--> X_1 --> X3
兩次,這會損害效率。
我的想法是,X_1
和X3
將前期運行後包含的值(X_1=8
,X3=24
),直到圖形被破壞,那麼我就可以直接利用的,而不是重新計算。
有沒有辦法達到目標?
這工作得很好。直接向中間節點X1和X3提供值將使佔位符X成爲可選項。但有一種方法可以讓數據保持在GPU中而不是傳輸到CPU上。無論如何,這種方法工作正常,謝謝。 – Microos