在Tensorflow中将张量连接成无轴

时间:2019-05-11 20:22:19

标签: python keras concatenation tensor

我要连接2个张量x和y,其形状分别为(64,64,1)和(None,64,64,8)

我收到了此错误消息

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)

1 个答案:

答案 0 :(得分:1)

错误实际上很清楚地指出了错误所在。您的代码中有两个错误,它们与形状中的None值无关。

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

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

通过生成具有正确形状(1, 64, 64, 8)的随机张量,都可以很容易地解决这两个问题(尽管Im不能完全确定应该完成什么工作?)。