【发布时间】:2019-12-27 14:16:11
【问题描述】:
我有 2 个张量:形状为 (None, 16, 7, 7, 1024) 的 A 和形状为 (1, 16, 7, 7, 1024) 的 B。我使用keras.layers.add([A, B]) 添加这些张量。我希望有一个形状为 (None, 16, 7, 7, 1024) 的张量,但我得到了 (1, 16, 7, 7, 1024) == > 请注意,批量大小现在变为 1。
如何得到我想要的结果(None)?
代码:
_h_state = np.zeros((16, 7, 7, 1024))
h_state = Input(tensor=tf.constant(_h_state, dtype=tf.float32), name='input_h_state')
enc = encoder.output
enc_x = Conv3D(filters=256, kernel_size=(1, 1, 1), strides=(1, 1, 1), name='enc_conv')(enc)
h_state_expanded = Lambda(lambda x: K.expand_dims(x, 0))(h_state)
h_state_x = Conv3D(filters=256, kernel_size=(1, 1, 1), strides=(1, 1, 1), name='h_state_conv')(h_state_expanded)
x = layers.add([enc_x, h_state_x])
x = Activation('tanh')(x)
.
.
.
【问题讨论】:
-
这应该可以正常工作。您确定您的原始批量大小大于 1?
-
B 的原始输入是 (16, 7, 7, 1024),我添加了额外的维度,以便可以对其执行 Conv3D。之后我想用 A 执行加法。我想保持结果的第一维为无
-
另一个信息,B 的原始输入是没有批量大小的常量值
-
@donto 你能分享可重现的代码吗?
-
@rvinas 问题已更新
标签: python tensorflow keras add