tensor = array([[
[ 0.1, 0.8],
[ 0.1, 0.8],
[ 0.1, 0.8]],
[[ 0.9, 0.3],
[ 0.1, 0.8],
[ 0.9, 0.3]],
[[ 0.1, 0.8],
[ 0.1, 0.8],
[ 0.9, 0.3]]])
selector = array([
[0, 0, 1],
[1, 1, 1],
[1, 1, 0]])
want = array([
[0.1 0.1 0.8],
[0.3 0.8 0.3],
[0.8 0.8 0.9]
])
张量T是NxNxK,选择器是NxN。选择器中的每个元素 v(i,j( 指示:从 T[i,j] 中抓取第 v(i,j(-个元素。
有没有办法实现这一点是numpy或tensorflow?谢谢!
----更新感谢Alok Singhal在Numpy中的回答。如果张量和选择器都是张量流张量,有没有办法做到这一点?
这是一种方法:
>>> i, j = np.ogrid[0:3, 0:3]
>>> i
array([[0],
[1],
[2]])
>>> j
array([[0, 1, 2]])
>>> tensor[i, j, selector]
array([[ 0.1, 0.1, 0.8],
[ 0.3, 0.8, 0.3],
[ 0.8, 0.8, 0.9]])