您能直观地解释或提供更多有关tf.gather_nd
的示例,以便在Tensorflow中对高维张量进行索引和切片吗?
我读了API,但是我发现自己很难遵循这个功能的概念。
答案 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]