复制Tensorflow张量的正确方法是什么?在常规Python中,非原语赋值(b = a)创建了对同一对象的引用,因此我们使用deepcopy。Tensorflow中是否同样需要tf.identity,或者Tensorflow是否将b视为b = a之后的唯一张量
我的具体需求总结如下。我正在构建一个以块为单位的模型,每个块都获取前一块的输出,通过层将其输入,然后与前一块的原始输出相加。请看标记为方法A和方法B的两行,哪一项是正确的?
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)发布于 2020-12-25 18:54:00
在您的例子中,简单赋值block_output_tensor = x应该可以很好地工作。只需重新排序行,以便在使用block_output_tensor之前定义它。
但是,在一些更复杂的情况下,使用tf.identity()确保正确的图形布局非常重要。看到这件事讨论了here at SO。
https://stackoverflow.com/questions/65445949
复制相似问题