tf.concat拼接不同长度张量出现维度不匹配报错如何解决
问题原因说明
tf.concat的规则是所有参与拼接的张量,除了拼接轴对应的维度可以不同,其余维度必须完全匹配。你当前的张量a是shape为(2, 3)的二维张量,张量b是shape为(5,)的一维张量,不仅维度数量不匹配,列维度也和最终需要的5列不符,所以触发报错。
调整后代码实现
你需要先对两个张量做预处理,再执行拼接,具体代码如下:
import tensorflow as tf a = tf.constant([[1, 2, 3], [1, 2, 3]]) b = tf.constant([1, 2, 3, 4, 5]) # 1. 给a补2列0,列数扩展到5,pad参数对应[维度0的前后填充数, 维度1的前后填充数] a_padded = tf.pad(a, paddings=[[0, 0], [0, 2]], constant_values=0) # 2. 将一维的b升为二维张量,shape变为(1,5) b_2d = tf.expand_dims(b, axis=0) # 3. 按行(axis=0)拼接两个张量 result = tf.concat([a_padded, b_2d], axis=0) print(result)
输出结果验证
运行后得到的输出和你预期的一致:
<tf.Tensor: shape=(3, 5), dtype=int32, numpy= array([[1, 2, 3, 0, 0], [1, 2, 3, 0, 0], [1, 2, 3, 4, 5]])>
注:你问题里标注的预期shape(4,2)属于笔误,实际输出shape为(3,5)
内容的提问来源于stack exchange,提问作者OK 400
相关产品推荐
相关产品推荐

