1
根據this answer,在張量流中,常數和不可訓練變量之間有什麼區別?
一個
tf.constant()
的值被多次存儲在存儲器中。
這提供了一個實際的答案,當您有一些不應該改變值的大張量時,是否使用張量常量或不可訓練的變量。
但是,我不清楚爲什麼兩者都存在,爲什麼(以及在什麼情況下)tf.constant
將被複制到內存中。
根據this answer,在張量流中,常數和不可訓練變量之間有什麼區別?
一個
tf.constant()
的值被多次存儲在存儲器中。
這提供了一個實際的答案,當您有一些不應該改變值的大張量時,是否使用張量常量或不可訓練的變量。
但是,我不清楚爲什麼兩者都存在,爲什麼(以及在什麼情況下)tf.constant
將被複制到內存中。
如果你做W = tf.constant(embedding, name="W")
那麼嵌入的值將被存儲兩次 - 在embedding
的numpy端和W
op的TensorFlow端。需要注意的是constant
值存儲在Graph
對象,它不支持大型並行數據傳輸優化(至少有acac487a之前性能的抱怨),同時Variable
value存儲優化
所以,這時候可以更好地使用恆定的? – erickrf
不改變的標量值是很好的候選 –