【问题标题】:Concatenating tensors in Tensorflow with None axis将 Tensorflow 中的张量与 None 轴连接起来
【发布时间】:2019-09-29 07:57:13
【问题描述】:

我用形状 (64,64,1) 和 (None,64,64,8) 连接 2 个张量 x 和 y

我收到了这个错误信息

ValueError:Concatenate 层需要具有匹配形状的输入,但 concat 轴除外。得到输入形状:[(64, 64, 1), (None, 64, 64, 8)]

x = Conv2D(8, (3, 3), activation='relu', padding='same')(x)
x = MaxPooling2D((2, 2), padding='same')(x)
#the shape of x is (None, 64, 64, 8)

#y is random generated bits tensor
y = tf.convert_to_tensor(np.random.choice([0, 1],(64,64,1)).astype(np.float32()))
z = Concatenate()([x,y],axis=0)
x = Conv2D(8, (3, 3), activation='relu', padding='same')(z)

【问题讨论】:

    标签: python keras concatenation tensor


    【解决方案1】:

    该错误实际上非常清楚地说明了问题所在。您的代码中有两个错误,它们与您的形状中的 None 值无关。

    • 第一个形状只有三个维度,而后者有四个。通过重塑它并在 axis=0 处添加 1 尺寸的尺寸来解决此问题。

    • 更成问题的是第二个错误。最后的尺寸也不匹配。 1 不是 8。

    通过生成具有正确形状(1, 64, 64, 8) 的随机张量可以很容易地修复两者(尽管我不完全确定它应该完成什么?)。

    【讨论】:

    • 谢谢,不过我改成
    • y = tf.convert_to_tensor(np.random.choice([0, 1],(1,64,64,8)).astype(np.float32())) z = Concatenate( )([x,y],axis=0)
    • 结果是。 Concatenate 层需要具有匹配形状的输入,但 concat 轴除外。得到输入形状:[(None, 64, 64, 8), (1, 64, 64, 8)]
    • 您确定您没有更改任何其他内容吗?确保 axis=0 静止!
    • 是的,我确定。我尝试使用 tf.concat() 代替
    猜你喜欢
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-02
    • 1970-01-01
    相关资源
    最近更新 更多