一个等效的操作(或一系列操作)是否像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]]
Run Code Online (Sandbox Code Playgroud)
显而易见的候选人tf.sub似乎只是元素行事.
使用广播:
sess.run(tf.transpose([tf.range(3)]) - tf.range(5))
Run Code Online (Sandbox Code Playgroud)
产量
array([[ 0, -1, -2, -3, -4],
[ 1, 0, -1, -2, -3],
[ 2, 1, 0, -1, -2]], dtype=int32)
Run Code Online (Sandbox Code Playgroud)
更具体地说,给定(3, 1)和(1, 5)数组,广播在数学上等同于将数组平铺成匹配的(3, 5)形状并逐点地进行操作
此切片通过循环现有数据在内部实现,因此不需要额外的内存.当给定的不平等行列状形状(3, 1)和(5),广播意志垫更小的形状与1's 左侧.这意味着像1D列表tf.range(5)被视为行向量,相当于[tf.range(5)]
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |