Ich frage mich, was tf.strided_slice()
Operator tatsächlich tut.
Die doc sagtWas macht `tf.strided_slice()`?
In erster Ordnung, diese Operation extrahiert ein Stück Größe Ende - beginnen von einem Tensor-Eingang an der durch beginnen angegebene Position zu starten. Das Slice wird fortgesetzt, indem Schritt zum Startindex hinzugefügt wird, bis alle Dimensionen nicht kleiner als end sind. Beachten Sie, dass Komponenten von stride negativ sein können, was eine umgekehrte Schicht verursacht.
Und in der Probe,
# '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]]]
Also in meinem Verständnis der doc, die erste Probe (tf.slice(input, begin=[1, 0, 0], end=[2, 1, 3], strides=[1, 1, 1])
),
- Größe resultiert, ist
end - begin = [1, 1, 3]
. Das Beispielergebnis zeigt[[[3, 3, 3,]]]
, diese Form ist[1, 1, 3]
, es scheint OK. - das erste Element des Ergebnisses ist
begin = [1, 0, 0]
. Das erste Element des Probenergebnisses ist3
, das istinput[1,0,0]
, es scheint OK. - Das Segment wird fortgesetzt, indem Schritt zum Anfangsindex hinzugefügt wird. So sollte das zweite Element des Ergebnisses
input[begin + strides] = input[2, 1, 1] = 6
sein, aber das Beispiel zeigt das zweite Element ist3
.
Was macht strided_slice()
?
. (Anmerkung: method names in the samples and the last example is incorrect)
Es fügt nicht "Schritte" direkt zu "beginnen" – martianwars
@martiwars Vielen Dank für Ihre Antwort! Also, wofür wird "schreitet" verwendet? – keisuke
hängen, eine Antwort schreiben :) – martianwars