Tensorflow:如何处理尝试平铺和连接两个张量的动态形状?
我有两个张量,例如Tensorflow:如何处理尝试平铺和连接两个张量的动态形状?,tensorflow,Tensorflow,我有两个张量,例如x=[1,2]和y=[3],我想沿着另一个的轴复制最后一个,获得z=[[1,3],[2,3].理想情况下在tensorflow中: x = tf.placeholder(shape=[None, 2], dtype = tf.float32) y = tf.placeholder(shape=[1], dtype = tf.float32) z = tf.concat(x, tf.tile(y, [ x.shape[0] ]) , 1) 问题是没有确定x占位符的第一个维度,如
x=[1,2]和y=[3]
,我想沿着另一个的轴复制最后一个,获得z=[[1,3],[2,3].
理想情况下在tensorflow中:
x = tf.placeholder(shape=[None, 2], dtype = tf.float32)
y = tf.placeholder(shape=[1], dtype = tf.float32)
z = tf.concat(x, tf.tile(y, [ x.shape[0] ]) , 1)
问题是没有确定x占位符的第一个维度,如何解决这个问题
import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
x = tf.placeholder(shape=[None, 2], dtype = tf.float32)
y = tf.placeholder(shape=[1], dtype = tf.float32)
dim = tf.shape(x)[0]
y1 = tf.expand_dims(y, axis = 1)
y1 = tf.tile(y1, [dim, 1])
z = tf.concat((x, y1), axis = 1)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
z_val = sess.run(z, feed_dict = {x:[[2,5],[5,7],[8,9]], y:[3]})
print(z_val)
输出:
[[ 2. 5. 3.]
[ 5. 7. 3.]
[ 8. 9. 3.]]
在我看来,这段代码隐式地使用了输入为1x2的信息,不适用于3x2,例如:对于feed_dict={x:[[2,5],[5,7],[8,9]],y:[3]}输出为[[2.5.5.3][7.8.9.3]],而我想要[[2,5,3],[5,7,3],[8,9]@BernardG,我现在已经推广了这个解决方案。看一看。