簡體   English   中英

Tensorflow - 復制張量與賦值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM