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