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]
])
Tensor T是NxNxK,选择器是NxN。选择器中的每个元素v(i,j)表示:从T [i,j]中获取v(i,j)个元素。
有没有办法实现这个numpy或tensorflow?谢谢!
----更新 感谢Alok Singhal在Numpy的回答。如果张量和选择器都是tensorflow Tensor,有没有办法做到这一点?
答案 0 :(得分:1)
以这种方式:
>>> 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]])