【问题标题】:Tensorflow - Copy Tensor vs. AssignmentTensorflow - 复制张量与分配
【发布时间】:2020-12-25 06:58:27
【问题描述】:

复制 Tensorflow 张量的正确方法是什么?在常规 Python 中,分配非基元 (b = a) 会创建对同一对象的引用,因此我们使用 deepcopy。在 Tensorflow 中是否同样需要 tf.identity,或者 Tensorflow 是否认为 bb = a 之后是唯一的 Tensor?

我的具体需求总结如下。我正在构建块中的模型,每个块获取前一个块的输出,通过层将其馈送,然后与前一个块的原始原始输出求和。请看标记为方法 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)

【问题讨论】:

    标签: python tensorflow keras tf.keras


    【解决方案1】:

    在您的情况下,简单的分配block_output_tensor = x 应该可以正常工作。只需重新排序行,在使用之前定义block_output_tensor

    但是在一些更复杂的情况下,使用tf.identity() 确保正确的图形布局很重要。请参阅here at SO 讨论的此事。

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      相关资源
      最近更新 更多