这是我的代码
x_and_h = Concatenate()([x_t_emb, h_t])
这是错误:
ValueError: `Concatenate` layer requires inputs with matching shapes except for the concat axis. Got inputs shapes: [(None, 16), (1, 64)]
我一直在尝试各种重塑操作以使形状兼容,但这些尝试均失败了:
h_t = tf.reshape(h_t, shape=tf.TensorShape([None, h_t.get_shape()[-1].value]))
x_t = tf.reshape(x_t, shape=tf.TensorShape([1, x_t.get_shape()[-1].value]))
有人可以告诉我发生了什么事,以及如何解决该问题?
答案 0 :(得分:1)
您能否提供有关定义的图层的更多详细信息?
无论如何,对于连接层,必须在同一轴上的两个张量之间至少具有一个尺寸匹配。
为简单起见,您可以轻松地看到“无”与1不匹配,而16与64不匹配。
除此之外,尝试按自己的方式重塑是错误的。最初,h_t的形状为(1,64),并且具有:
h_t = tf.reshape(h_t, shape=tf.TensorShape([None, h_t.get_shape()[-1].value]))
您正尝试将其重塑为(None,64)张量,这在概念上是错误的,因为None表示它可以是任何整数,并且通常表示批次大小。
尝试做同样的问题:
x_t = tf.reshape(x_t, shape=tf.TensorShape([1, x_t.get_shape()[-1].value]))
当您尝试将其重塑为固定形状时,其初始形状为(None,16)。
我认为您应该尝试使h_t层返回形状为(None,1,16)或(None,16)的张量,以便在第一种情况下可以展平然后串联,而仅将concatenate用于第二个。