沿最后一个尺寸的不同大小的Tensorflow张量操作

时间:2019-04-02 18:34:50

标签: python tensorflow deep-learning tensor

我有一个tensor1,形状为[1 128, 128 , 100],我还有一个tensor2,形状为[1,128,128,1]。 如果我尝试在最后一个维度上减去tensor1 - tensor2tensor2会自动广播到[1,128,128,100]并进行减法吗?否则只会减去tensor1的第一层??

谢谢!!!!!!

1 个答案:

答案 0 :(得分:1)

是的,它将被广播。张量流中最广的rules与numpy相同:

  

在两个数组上操作时,NumPy逐元素比较它们的形状。它从尾随尺寸开始,一直向前发展。何时兼容两个维度

     
      
  1. 它们相等,或者

  2.   
  3. 其中一个是1

  4.   

例如:

import tensorflow as tf

v1 = tf.Variable(2*tf.ones([1, 2, 2, 3]))
v2 = tf.Variable(tf.ones([1, 2, 2, 1]))
diff = v1 - v2 

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(diff.eval()) # <-- `diff` contains only 'ones' because of broadcasting
# [[[[1. 1. 1.]
#    [1. 1. 1.]]
# 
#   [[1. 1. 1.]
#    [1. 1. 1.]]]]

print(diff.get_shape().as_list()) # [1, 2, 2, 3] <-- same shape as `v1`

在您的情况下,第二张量的尾随尺寸为1,根据规则,该尺寸可以广播。其余尺寸相等。