我要连接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)
答案 0 :(得分:1)
错误实际上很清楚地指出了错误所在。您的代码中有两个错误,它们与形状中的None值无关。
第一个形状只有三个尺寸,而后者只有四个尺寸。通过重塑形状并在axis = 0处添加尺寸为1的尺寸来解决此问题。
更多有问题的是第二个错误。最后一个尺寸也不匹配。 1不是8。
通过生成具有正确形状(1, 64, 64, 8)
的随机张量,都可以很容易地解决这两个问题(尽管Im不能完全确定应该完成什么工作?)。