hallo我是tensorflow的新手,我正在尝试添加两个尺寸为一维的张量,实际上当我打印出来时没有添加任何东西,例如:
num_classes = 11
v1 = tf.Variable(tf.constant(1.0, shape=[num_classes]))
v2 = tf.Variable(tf.constant(1.0, shape=[1]))
result = tf.add(v1 , v2)
这是我打印出来时的输出
result Tensor("Add:0", shape=(11,), dtype=float32)
所以结果仍然是11而不是12.我的方法是错的还是有另一种方法来添加它们。
答案 0 :(得分:2)
从此处的文档:https://www.tensorflow.org/api_docs/python/tf/add
tf.add(x,y,name = None)
Returns x + y element-wise.
NOTE: Add supports broadcasting.
这意味着您调用的add函数将迭代v1中的每一行并在其上广播v2。它不会按预期附加列表,而是可能发生的事情是v2的值将添加到v1的每一行。
所以Tensorflow正在这样做:
sess = tf.Session()
c1 = tf.constant(1.0, shape=[1])
c2 = tf.constant(1.0, shape=[11])
result = (tf.add(c1, c2))
output = sess.run(result)
print(output) # [ 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
如果你想要一个12号形状的输出你应该使用concat。 https://www.tensorflow.org/api_docs/python/tf/concat
sess = tf.Session()
c1 = tf.constant(1.0, shape=[1])
c2 = tf.constant(1.0, shape=[11])
result = (tf.concat([c1, c2], axis=0))
output = sess.run(result)
print(output) # [ 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.]
答案 1 :(得分:0)
听起来你可能想要连接这两个张量,所以tf.concat()
op可能是你想要使用的:
num_classes = 11
v1 = tf.Variable(tf.constant(1.0, shape=[num_classes]))
v2 = tf.Variable(tf.constant(1.0, shape=[1]))
result = tf.concat([v1, v2], axis=0)
result
张量的形状为[12]
(即包含12个元素的向量)。