是否是一个等效的操作(或一系列操作),其作用类似于 numpy 外部函数?
import numpy as np
a = np.arange(3)
b = np.arange(5)
print np.subtract.outer(a,b)
[[ 0 -1 -2 -3 -4]
[ 1 0 -1 -2 -3]
[ 2 1 0 -1 -2]]
显而易见的候选人 tf.sub
似乎只按元素行事。
最佳答案
使用广播:
sess.run(tf.transpose([tf.range(3)]) - tf.range(5))
输出
array([[ 0, -1, -2, -3, -4],
[ 1, 0, -1, -2, -3],
[ 2, 1, 0, -1, -2]], dtype=int32)
更具体地说,给定 (3, 1)
和 (1, 5)
数组,广播在数学上等同于将数组平铺成匹配的 ( 3, 5)
形状和逐点操作
这种平铺是通过循环现有数据在内部实现的,因此不需要额外的内存。当给定形状如 (3, 1)
和 (5)
的不相等等级时,广播将在较小的形状上填充 1
离开了。这意味着像 tf.range(5)
这样的一维列表被视为行向量,并且等同于 [tf.range(5)]
关于python - tensorflow中的外加减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38517940/