首页 > 解决方案 > 如何在 TensorFlow 中连接大小不等的张量?

问题描述

我有一个形状张量[64, 270](64 个批次 * 270 个项目),并且想在每个批次中添加相同的 200 个附加项目(一个形状张量[200])。结果应该是 64 个批次中的每一个都包含其原始的 270 个项目以及每个批次相同的 200 个新项目。

基本上concat([64, 270], [200])-->[64, 470]

我怎样才能做到这一点?我尝试使用tf.concat,来tf.stack增加第二个张量的等级,tf.expand_dims但没有任何效果。它总是抱怨不等的等级或不等的第零(批次)维度。

标签: pythontensorflow

解决方案


你可以试试,

tf.concat([x,tf.tile(y[None,...],[tf.shape(x)[0],1])], axis=1)

代码:

x = tf.placeholder(tf.float32,[None,270])
y = tf.placeholder(tf.float32, (200))

z = tf.concat([x,tf.tile(y[None,...],[tf.shape(x)[0],1])], axis=1)
with tf.Session() as sess:
   print(sess.run(z, {x:np.random.normal(size=(64,270)), y:np.random.normal(size=(200))}).shape)
# (64, 470)

推荐阅读