[英]Tensorflow - Copy Tensor vs. Assignment
復制 Tensorflow 張量的正確方法是什么? 在常規 Python 中,分配非基元 ( b = a
) 會創建對相同 object 的引用,因此我們使用 deepcopy。 tf.identity
中是否同樣需要 tf.identity,或者 Tensorflow 在b = a
之后是否認為b
是唯一的張量?
我的具體需求總結如下。 我正在構建一個 model 塊,每個塊都采用前一個塊的 output ,通過層饋送它,然后與前一個塊的原始原始 output 求和。 請參閱標記為方法 A 和方法 B 的 2 行。哪個是正確的?
for block_num in range(4):
if block_num == 0:
x = inputTensor
x = tf.keras.layers.Dense(100, activation='relu')(x)
if block_num > 0:
x = block_output_tensor + x
# method A - assignment
block_output_tensor = x
# method B - copy
# block_output_tensor = tf.identity(x)
在您的情況下,簡單的分配block_output_tensor = x
應該可以正常工作。 只需重新排序行,在使用之前定義block_output_tensor
。
然而,在一些更復雜的情況下,使用tf.identity()
確保正確的圖形布局很重要。 請參閱SO 此處討論的此問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.