Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow:如何处理尝试平铺和连接两个张量的动态形状?_Tensorflow - Fatal编程技术网

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,我现在已经推广了这个解决方案。看一看。