tf.concat 不同长度的张量

Posted

技术标签:

【中文标题】tf.concat 不同长度的张量【英文标题】:tf.concat tensors with different length 【发布时间】:2022-01-10 22:55:19 【问题描述】:

我有 2 个张量,例如:

a = tf.constant([[1, 2, 3], [1, 2, 3]])
b = tf.constant([1, 2, 3, 4, 5])

我想要的输出是:

<tf.Tensor: shape=(4, 2), dtype=int64, numpy=
 array([[1, 2, 3, 0, 0],
        [1, 2, 3, 0, 0],
        [1, 2, 3, 4, 5]], dtype=int64)>

但是当我尝试tf.concat([a, b], axis=0) 时,我得到了这个错误:

InvalidArgumentError: ConcatOp : Dimensions of inputs should match: shape[0] = [2,3] vs. shape[1] = [1,5] [Op:ConcatV2] name: concat

【问题讨论】:

这能回答你的问题吗? Keras Concatenate layer dimensions acting up @A.Najafi 我认为不是。 Lambda,如果我没记错的话,不能“扩展”你的张量维度添加 0 值,对吧? 【参考方案1】:

试试这个:

a = tf.constant([[1, 2, 3], [1, 2, 3]])
b = tf.constant([1, 2, 3, 4, 5])

c = tf.concat([tf.pad(a, tf.constant([[0,0], [0,2]])), tf.expand_dims(b, axis=0)], axis=0)
tf.print(c)

[[1 2 3 0 0]
 [1 2 3 0 0]
 [1 2 3 4 5]]

【讨论】:

以上是关于tf.concat 不同长度的张量的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow tensor张量拼接concat & stack

Tensor的合并与分割

tensorflow之张量扩张Broadcasting合并分割

有限破裂矩张量的发展历史

根据张量流中给定的序列长度数组对 3D 张量进行切片

强制 pad_sequence 到一定长度