Tensorflow切片/提取

时间:2018-04-08 14:36:19

标签: python tensorflow

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,有没有办法做到这一点?

1 个答案:

答案 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]])