tf.gather_nd直观地做了什么?

时间:2017-03-05 12:07:13

标签: tensorflow

您能直观地解释或提供更多有关tf.gather_nd的示例,以便在Tensorflow中对高维张量进行索引和切片吗?

我读了API,但是我发现自己很难遵循这个功能的概念。

2 个答案:

答案 0 :(得分:16)

好的,所以想想这样:

您正在提供索引值列表,以索引提供的张量以获取这些切片。您提供的索引的第一个维度是您将要执行的每个索引。让我们假设张量只是一个列表列表。

[[0]]表示您希望在提供的张量中获得索引0处的一个特定切片(列表)。就像这样:

[tensor[0]]

[[0],[1]]表示你想在索引0和1得到两个特定的切片,如下所示:

[tensor[0], tensor[1]]

现在如果张量超过一个维度怎么办?我们做同样的事情:

[[0,0]]表示您希望在第0个列表的索引[0,0]处获得一个切片。像这样:

[tensor[0][0]]

[[0,1],[2,3]]表示您希望在提供的索引和尺寸处返回两个切片。像这样:

[tensor[0][1], tensor[2][3]]

我希望这是有道理的。我尝试使用Python索引来帮助解释在Python中如何将其用于列表列表。

答案 1 :(得分:0)

您提供一个张量和表示该张量中位置的索引。它返回与您提供的索引相对应的张量元素。

编辑:一个例子

import tensorflow as tf
sess = tf.Session()
x = [[1,2,3],[4,5,6]]
y = tf.gather_nd(x, [[1,1],[1,2]])
print(sess.run(y))
  

[5,6]