StridedSlice

publiczna klasa końcowa StridedSlice

Zwróć plasterek krokowy z `input`.

Uwaga, większość użytkowników Pythona będzie chciała używać Pythona Tensor.__getitem__ lub Variable.__getitem__ zamiast bezpośrednio tej opcji.

Celem tej operacji jest utworzenie nowego tensora z podzbiorem elementów z n-wymiarowego tensora „wejściowego”. Podzbiór jest wybierany przy użyciu sekwencji „m” specyfikacji rzadkiego zakresu zakodowanych w argumentach tej funkcji. Należy zauważyć, że w niektórych przypadkach „m” może być równe „n”, ale nie musi tak być. Każdy wpis specyfikacji zakresu może być jednym z następujących:

- Elipsa (...). Elipsy służą do sugerowania zera lub większej liczby wymiarów selekcji pełnowymiarowej i są tworzone przy użyciu `ellipsis_mask`. Na przykład „foo[...]” to wycinek tożsamości.

- Nowa oś. Służy do wstawiania nowego wymiaru kształtu=1 i jest tworzony przy użyciu `new_axis_mask`. Na przykład `foo[:, ...]`, gdzie `foo` ma kształt `(3, 4)`, tworzy tensor `(1, 3, 4)`.

- Zakres „początek: koniec: krok”. Służy do określenia ile wybrać z danego wymiaru. „krok” może być dowolną liczbą całkowitą oprócz 0. „początek” jest liczbą całkowitą reprezentującą indeks pierwszej wartości do wybrania, podczas gdy „koniec” oznacza indeks ostatniej wartości do wybrania. Liczba wartości wybranych w każdym wymiarze to „koniec – początek”, jeśli „krok > 0” i „początek – koniec”, jeśli „krok < 0”. „Początek” i „koniec” mogą być wartościami ujemnymi, gdzie „-1” jest ostatnim elementem, „-2” jest przedostatnim elementem. `begin_mask` kontroluje, czy zastąpić jawnie podany `begin` domyślną wartością efektywną `0`, jeśli `krok > 0` i `-1`, jeśli `krok < 0`. `end_mask` jest analogiczne, ale daje liczbę wymaganą do utworzenia największego otwartego przedziału. Na przykład, biorąc pod uwagę tensor `(3,)` `foo[:]`, efektywne `początek' i `koniec` to `0` i `3`. Nie zakładaj, że jest to równoważne `foo[0:-1]`, które ma efektywny „początek” i „koniec” wynoszący „0” i „2”. Innym przykładem jest `foo[-2::-1]`, które odwraca pierwszy wymiar tensora, usuwając dwa ostatnie (w oryginalnej kolejności elementów). Na przykład `foo = [1,2,3,4]; foo[-2::-1]` to `[4,3]`.

- Pojedynczy indeks. Służy do przechowywania tylko elementów, które mają dany indeks. Na przykład (`foo[2, :]` na tensorze kształtu `(5,6)` tworzy tensor kształtu `(6,)`. Jest on zakodowany w parametrach `begin` i `end` oraz `shrink_axis_mask`.

Każda specyfikacja zakresu pojęciowego jest zakodowana w argumencie operacji. To kodowanie najlepiej zrozumieć, rozważając nietrywialny przykład. W szczególności `foo[1, 2:4, None, ..., :-3:-1, :]` będzie zakodowane jako

begin = [1, 2, x, x, 0, x] # x denotes don't care (usually 0)
 end = [2, 4, x, x, -3, x]
 strides = [1, 1, x, x, -1, 1]
 begin_mask = 1&lt;&lt;4 | 1&lt;&lt;5 = 48
 end_mask = 1&lt;&lt;5 = 32
 ellipsis_mask = 1&lt;&lt;3 = 8
 new_axis_mask = 1&lt;&lt;2 = 4
 shrink_axis_mask = 1&lt;&lt;0 = 1
 
W tym przypadku, jeśli `foo.shape` to (5, 5, 5, 5, 5, 5) ostateczny kształt plasterka przyjmuje postać (2, 1, 5, 5, 2, 5). Przeanalizujmy krok po kroku każdą specyfikację argumentu.

1. Pierwszy argument w przykładowym wycinku zostaje zamieniony na „begin = 1” i „end = start + 1 = 2”. Aby odróżnić od oryginalnej specyfikacji `2:4`, ustawiamy również odpowiedni bit w `shrink_axis_mask`.

2. „2:4” oznacza 2, 4, 1 na początek, koniec i krok. Wszystkie maski mają zerowe bity.

3. None jest synonimem tf.newaxis . Oznacza to wstawienie wymiaru o rozmiarze 1 w ostatecznym kształcie. Wartości fikcyjne są dodawane do początku, końca i kroku, podczas gdy ustawiony jest bit new_axis_mask.

4. `...` pobierz pełne zakresy z dowolnej liczby wymiarów, aby w pełni określić wycinek dla każdego wymiaru kształtu wejściowego.

5. `:-3:-1` pokazuje użycie indeksów ujemnych. Ujemny indeks „i” powiązany z wymiarem mającym kształt „s” jest konwertowany na dodatni indeks „s + i”. Zatem `-1` staje się `s-1` (tzn. ostatnim elementem). Ta konwersja jest wykonywana wewnętrznie, więc początek, koniec i kroki otrzymują x, -3 i -1. Odpowiedni bit Begin_mask jest ustawiony, aby wskazać, że zakres początkowy jest pełnym zakresem (ignorując x).

6. `:` oznacza, że ​​wybrana została cała zawartość odpowiedniego wymiaru. Jest to odpowiednik `::` lub `0::1`. początek, koniec, a kroki otrzymują odpowiednio 0, 0 i 1. Ustawione są także odpowiednie bity w `begin_mask` i `end_mask`.

Wymagania : `0 != kroki[i] dla i w [0, m)` `maska_elipsy musi być potęgą dwójki (tylko jedna wielokropek)`

Klasy zagnieżdżone

klasa StridedSlice.Opcje Opcjonalne atrybuty dla StridedSlice

Metody publiczne

Wyjście <T>
jako wyjście ()
Zwraca symboliczny uchwyt tensora.
statyczny StridedSlice.Options
BeginMask (Długie BeginMask)
statyczny <T, U rozszerza numer> StridedSlice <T>
utwórz (zakres zakresu , wejście argumentu <T>, początek argumentu <U>, koniec argumentu <U>, kroki argumentu <U>, opcje... opcje)
Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację StridedSlice.
statyczny StridedSlice.Options
ellipsisMask (Długa elipsyMaska)
statyczny StridedSlice.Options
maska ​​końcowa (długa maska ​​końcowa)
statyczny StridedSlice.Options
nowośćAxisMask (Długa nowaAxisMask)
Wyjście <T>
statyczny StridedSlice.Options
kurczyćAxisMask (Długie kurczenieAxisMask)

Metody dziedziczone

Metody publiczne

publiczne wyjście <T> asOutput ()

Zwraca symboliczny uchwyt tensora.

Dane wejściowe operacji TensorFlow są wynikami innej operacji TensorFlow. Ta metoda służy do uzyskania symbolicznego uchwytu reprezentującego obliczenia danych wejściowych.

public static StridedSlice.Options BeginMask (Long BeginMask)

Parametry
rozpocznij maskę maska ​​bitowa, w której bit i wynoszący 1 oznacza zignorowanie wartości początkowej i zamiast tego użycie największego możliwego interwału. W czasie wykonywania Begin[i] zostanie zastąpione przez `[0, n-1)`, jeśli `stride[i] > 0` lub `[-1, n-1]`, jeśli `stride[i] < 0`

public static StridedSlice <T> utwórz (zakres zakresu , argument <T> wejście, początek argumentu <U>, koniec argumentu <U>, kroki argumentu <U>, opcje... opcje)

Metoda fabryczna służąca do tworzenia klasy opakowującej nową operację StridedSlice.

Parametry
zakres aktualny zakres
zaczynać `begin[k]` określa przesunięcie w specyfikacji `k`tego zakresu. Dokładny wymiar, któremu to odpowiada, zostanie określony przez kontekst. Wartości wykraczające poza zakres zostaną dyskretnie zablokowane. Jeśli `k`-ty bit `begin_mask`, wówczas `begin[k]` jest ignorowany i zamiast tego używany jest pełny zakres odpowiedniego wymiaru. Wartości ujemne powodują rozpoczęcie indeksowania od najwyższego elementu, np. jeśli `foo==[1,2,3]` to `foo[-1]==3`.
koniec `end[i]` jest jak `begin` z tą różnicą, że `end_mask` służy do określenia pełnych zakresów.
kroki `strides[i]` określa przyrost w `i` specyfikacji po wyodrębnieniu danego elementu. Indeksy ujemne odwrócą pierwotną kolejność. Wartości zewnętrzne lub zakresowe są ograniczane do `[0,dim[i]), jeśli plasterek[i]>0` lub `[-1,dim[i]-1], jeśli plasterek[i] < 0`
opcje przenosi opcjonalne wartości atrybutów
Zwroty
  • nowa instancja StridedSlice

public static StridedSlice.Options ellipsisMask (Długa ellipsisMask)

Parametry
elipsaMaska maska ​​bitowa, gdzie bit „i” ma wartość 1, co oznacza, że ​​„i” pozycja jest w rzeczywistości elipsą. Maksymalnie jeden bit może wynosić 1. Jeśli `ellipsis_mask == 0`, wówczas dostarczana jest niejawna maska ​​elipsy o wartości `1 << (m+1)`. Oznacza to, że `foo[3:5] == foo[3:5, ...]`. Wielokropek domyślnie tworzy tyle specyfikacji zakresu, ile potrzeba, aby w pełni określić przekrojowy zakres dla każdego wymiaru. Na przykład dla 4-wymiarowego tensora `foo` plasterek `foo[2, ..., 5:8]` implikuje `foo[2, :, :, 5:8]`.

public static StridedSlice.Options endMask (Long endMask)

Parametry
maska ​​końcowa analogicznie do `begin_mask`

public static StridedSlice.Options newAxisMask (Długa nowaAxisMask)

Parametry
nowaMaska Osi maska ​​bitowa, gdzie bit „i” ma wartość 1, co oznacza, że ​​„i” specyfikacja tworzy nowy wymiar kształtu 1. Na przykład `foo[:4, tf.newaxis, :2]` utworzy tensor kształtu `(4, 1, 2)`.

publiczne wyjście <T> wyjście ()

public static StridedSlice.Options zmniejszAxisMask (Długie skurczenieAxisMask)

Parametry
zmniejszyćAxisMask maska ​​bitowa, gdzie bit „i” oznacza, że ​​„i” specyfikacja powinna zmniejszyć wymiarowość. początek i koniec muszą sugerować wycinek o rozmiarze 1 w wymiarze. Na przykład w Pythonie można zrobić `foo[:, 3, :]`, co spowoduje, że `shrink_axis_mask` będzie wynosić 2.