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(Python):如何将标量附加到张量中的每一行_Python_Tensorflow - Fatal编程技术网

Tensorflow(Python):如何将标量附加到张量中的每一行

Tensorflow(Python):如何将标量附加到张量中的每一行,python,tensorflow,Python,Tensorflow,如果我有一个二维张量,第一维是动态的,我怎么能在每行的末尾附加一个标量值呢 如果我把[[1,2],[3,4]]馈送给张量,我想把它变成[[1,2,5],[3,4,5]] 示例(不起作用): 这给了我: ValueError:无法将“concat_3”(op:'ConcatV2')的标量(改为使用tf.stack)与输入形状连接起来:[]、[?、2]、] 我认为这需要一些tf.stack、tf.tile和tf.shape的组合,但我似乎无法正确地实现它。这里有一种方法: 展开要附加的标量张量上的

如果我有一个二维张量,第一维是动态的,我怎么能在每行的末尾附加一个标量值呢

如果我把[[1,2],[3,4]]馈送给张量,我想把它变成[[1,2,5],[3,4,5]]

示例(不起作用):

这给了我: ValueError:无法将“concat_3”(op:'ConcatV2')的标量(改为使用tf.stack)与输入形状连接起来:[]、[?、2]、]


我认为这需要一些tf.stack、tf.tile和tf.shape的组合,但我似乎无法正确地实现它。

这里有一种方法:

  • 展开要附加的标量张量上的维度,使其排名为2
  • 用于重复行
  • 沿最后一个轴连接两个张量
例如:

import tensorflow as tf

a = tf.placeholder(tf.int32, shape=[None, 2])
c = tf.constant(5)[None, None]  # Expand dims. Shape=(1, 1)
c = tf.tile(c, [tf.shape(a)[0], 1])  # Repeat rows. Shape=(tf.shape(a)[0], 1)
b = tf.concat([a, c], axis=1)

with tf.Session() as sess:
    print(sess.run(b, feed_dict={a: [[1, 2], [3, 4]]}))

受rvinas答案的启发,我提出了一个更简单的解决方案:

constants=tf.fill((tf.shape(张量)[0],1),5.0)#创建常量列向量
张量=tf.keras.layers.Concatenate(轴=1)([张量,常数])

IMO填充是最简单的方法:

a = tf.placeholder(tf.int32, shape=[None, 2])
b = tf.pad(a, [[0, 0], [0, 1]], constant_values=5)
将附加一个
5
-列

文档:.

,特别是其中的注释,可以给您一个提示。
a = tf.placeholder(tf.int32, shape=[None, 2])
b = tf.pad(a, [[0, 0], [0, 1]], constant_values=5)