gpt4 book ai didi

python - 添加 2 个不同阶的张量

转载 作者:行者123 更新时间:2023-12-02 03:31:15 27 4
gpt4 key购买 nike

我有 2 个张量:形状为 (None, 16, 7, 7, 1024) 的 A 和形状为 (1, 16, 7, 7, 1024)。我使用 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)
.
.
.

剧情: enter image description here

最佳答案

当您打印 x.shape 时,输出为 (None, 16, 7, 7, 1024),但有趣的是 plot_model model.summary 显示“未广播”的第一个维度。

我相信你是对的 - 方法keras.layers._Merge.compute_output_shape在这种特殊情况下,可能无法正确处理第一维的广播。这可能应该通过拉取请求来修复。

与此同时,您可以使用:

x = Lambda(lambda x: x[0] + x[1])([enc_x, h_state_x])

给出了预期的输出形状。

关于python - 添加 2 个不同阶的张量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59502015/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com