我有两个张量:
a = tf.placeholder(tf.float32, [None, 20, 100])
b = tf.placeholder(tf.float32, [None, 1, 100])
我想将b
追加到a[i, 20, 100]
,以创建c
,例如c
的形状为[None, 20, 200]
。
这似乎相当简单,但我还没有想出如何使用tf.concat
执行此操作:
tf.concat(0, [a, b]) -> Shapes (20, 100) and (1, 100) are not compatible
tf.concat(1, [a, b]) => shape=(?, 28, 100) which is not what I wanted
tf.concat(2, [a, b]) -> Shapes (?, 20) and (?, 1) are not compatible
我是否需要首先重塑a
和b
然后重新连接?
答案 0 :(得分:1)
可以使用tf.tile
完成此操作。您需要克隆尺寸1,20
次的张量,使其与a
兼容。然后沿着维度2的简单连接将为您提供结果。
这是完整的代码,
import tensorflow as tf
a = tf.placeholder(tf.float32, [None, 20, 100])
b = tf.placeholder(tf.float32, [None, 1, 100])
c = tf.tile(b, [1,20,1])
print c.get_shape()
# Output - (?, 20, 100)
d = tf.concat(2, [a,c])
print d.get_shape()
# Output - (?, 20, 200)