用张量B的每一行减去张量A的每一行

时间:2019-05-08 07:37:51

标签: python tensorflow deep-learning tensor

我想从Tensor B的每一行中减去Tensor A的每一行。这就是我想要的(这不会产生结果):

A = tf.constant([[1,2],[2,4]])
B = tf.constant([[1,2],[3,4]])
C = tf.math.subtract(A,B)
tf.Session().run(C)
print(C)
[[0 0]
 [-1 0]]
I want:
>>> C = [[[0,0],[-2,-2]],[[1,2],[-1,0]]]

我知道我可以使两个数组都变大(基本上重复输入以使它们具有相同的维数),以便我可以简单地使用tf.math.subtract。但是,这不是一个选择,因为我将不得不非常减少批量大小,并且将无法正确训练模型

1 个答案:

答案 0 :(得分:0)

我现在知道了。万一其他人偶然发现相同的问题。这是我找到的解决方案:

A = tf.constant([[1,2],[2,4]])
B = tf.constant([[1,2],[3,4]])
C = tf.math.subtract(tf.expand_dims(A,axis=2),tf.expand_dims(B,axis=0))
tf.Session().run(C)
[[[0,0],[-2,-2]],[[1,2],[-1,0]]]

它基本上利用了Tensorflow中的广播机制,该机制方便地使双向numpys广播机制更易学习。