我想知道tf.strided_slice()
運營商實際上做了什麼。
的doc說,`tf.strided_slice()`做了什麼?
對於一階,該操作提取大小端的片 - 由張量輸入開始開始在由開始所指定的位置。切片繼續向開始索引添加步幅,直到所有維度都不小於結尾。請注意,步幅的分量可能是負值,這會導致反向切片。
,以樣本中,
# 'input' is [[[1, 1, 1], [2, 2, 2]],
# [[3, 3, 3], [4, 4, 4]],
# [[5, 5, 5], [6, 6, 6]]]
tf.slice(input, [1, 0, 0], [2, 1, 3], [1, 1, 1]) ==> [[[3, 3, 3]]]
tf.slice(input, [1, 0, 0], [2, 2, 3], [1, 1, 1]) ==> [[[3, 3, 3],
[4, 4, 4]]]
tf.slice(input, [1, 1, 0], [2, -1, 3], [1, -1, 1]) ==>[[[4, 4, 4],
[3, 3, 3]]]
因此,在我的文檔的理解,第一個樣品(tf.slice(input, begin=[1, 0, 0], end=[2, 1, 3], strides=[1, 1, 1])
),
- 導致大小
end - begin = [1, 1, 3]
。示例結果顯示[[[3, 3, 3,]]]
,那個形狀是[1, 1, 3]
,看起來確定。 - 結果的第一個元素是
begin = [1, 0, 0]
。樣本結果的第一個元素是3
,它是input[1,0,0]
,它似乎沒問題。 - 切片繼續向開始索引添加步幅。所以結果的第二個元素應該是
input[begin + strides] = input[2, 1, 1] = 6
,但示例顯示第二個元素是3
。
strided_slice()
是什麼?
(注:method names in the samples and the last example is incorrect)
它不會將'strides'直接添加到'begin' – martianwars
@martianwars謝謝回覆!那麼,「大步」用於什麼? – keisuke
掛上,寫一個答案:) – martianwars