python – 张量流中的外加和减法

一个等效的操作(或一系列操作)是否像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)形状并逐点操作

enter image description here

此切片通过循环现有数据在内部实现,因此不需要额外的内存.当给出具有类似(3,1)和(5)的形状的不等等级时,广播将填充较小的形状,左边是1.这意味着像tf.range(5)这样的1D列表被视为行向量,相当于[tf.range(5)]

转载注明原文:python – 张量流中的外加和减法 - 代码日志