Kembalikan irisan bergaris dari `input`.
Catatan, sebagian besar pengguna python ingin menggunakan Python Tensor.__getitem__
atau Variable.__getitem__
daripada operasi ini secara langsung.
Tujuan dari operasi ini adalah untuk menghasilkan tensor baru dengan subset elemen dari tensor `input` dimensi `n`. Subset dipilih menggunakan urutan spesifikasi rentang sparse `m` yang dikodekan ke dalam argumen fungsi ini. Catatan, dalam beberapa kasus `m` bisa sama dengan `n`, tetapi ini tidak perlu terjadi. Setiap entri spesifikasi rentang dapat berupa salah satu dari berikut ini:
- Elipsis (...). Elips digunakan untuk menyiratkan nol atau lebih dimensi dari pemilihan dimensi penuh dan diproduksi menggunakan `elipsis_mask`. Misalnya, `foo[...]` adalah irisan identitas.
- Sebuah sumbu baru. Ini digunakan untuk menyisipkan dimensi shape=1 baru dan diproduksi menggunakan `new_axis_mask`. Misalnya, `foo[:, ...]` di mana `foo` adalah bentuk `(3, 4)` menghasilkan tensor `(1, 3, 4)`.
- Rentang `mulai: akhir: langkah`. Ini digunakan untuk menentukan berapa banyak yang harus dipilih dari dimensi tertentu. `stride` dapat berupa bilangan bulat apa saja tetapi 0. `begin` adalah bilangan bulat yang mewakili indeks dari nilai pertama yang dipilih sementara `end` mewakili indeks dari nilai terakhir yang dipilih. Jumlah nilai yang dipilih dalam setiap dimensi adalah `end - begin` jika `stride > 0` dan `begin - end` jika `stride < 0`. `begin` dan `end` bisa negatif di mana `-1` adalah elemen terakhir, `-2` adalah yang kedua terakhir. `begin_mask` mengontrol apakah akan mengganti `begin` yang diberikan secara eksplisit dengan nilai efektif implisit `0` jika `stride > 0` dan `-1` jika `stride < 0`. `end_mask` adalah analog tetapi menghasilkan angka yang diperlukan untuk membuat interval terbuka terbesar. Misalnya, diberikan bentuk `(3,)` tensor `foo[:]`, `begin` dan `end` yang efektif adalah `0` dan `3`. Jangan menganggap ini setara dengan `foo[0:-1]` yang memiliki `begin` dan `end` efektif dari `0` dan `2`. Contoh lain adalah `foo[-2::-1]` yang membalikkan dimensi pertama dari sebuah tensor sambil menjatuhkan dua yang terakhir (dalam elemen urutan asli). Misalnya `foo = [1,2,3,4]; foo[-2::-1]` adalah `[4,3]`.
- Sebuah indeks tunggal. Ini digunakan untuk menyimpan hanya elemen yang memiliki indeks tertentu. Misalnya (`foo[2, :]` pada bentuk `(5,6)` tensor menghasilkan bentuk `(6,)` tensor. Ini dikodekan dalam `begin` dan `end` dan `shrink_axis_mask`.
Setiap spesifikasi rentang konseptual dikodekan dalam argumen op. Pengkodean ini paling baik dipahami dengan mempertimbangkan contoh non-sepele. Secara khusus, `foo[1, 2:4, None, ..., :-3:-1, :]` akan dikodekan sebagai
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<<4 | 1<<5 = 48
end_mask = 1<<5 = 32
ellipsis_mask = 1<<3 = 8
new_axis_mask = 1<<2 = 4
shrink_axis_mask = 1<<0 = 1
Dalam kasus ini jika `foo.shape` adalah (5, 5, 5, 5, 5, 5) bentuk akhir irisan menjadi (2, 1, 5, 5, 2, 5). Mari kita berjalan selangkah demi selangkah melalui setiap spesifikasi argumen.1. Argumen pertama dalam potongan contoh diubah menjadi `mulai = 1` dan `akhir = mulai + 1 = 2`. Untuk membedakan dari spesifikasi asli `2:4` kami juga menyetel bit yang sesuai di `shrink_axis_mask`.
2. `2:4` adalah kontribusi 2, 4, 1 untuk memulai, mengakhiri, dan melangkah. Semua topeng memiliki kontribusi nol bit.
3. None adalah sinonim untuk tf.newaxis
. Ini berarti memasukkan dimensi ukuran 1 dimensi dalam bentuk akhir. Nilai dummy dikontribusikan untuk memulai, mengakhiri dan melangkah, sementara bit new_axis_mask disetel.
4. `...` ambil rentang penuh dari dimensi sebanyak yang diperlukan untuk sepenuhnya menentukan irisan untuk setiap dimensi bentuk input.
5. `:-3:-1` menunjukkan penggunaan indeks negatif. Indeks negatif `i` yang terkait dengan dimensi yang berbentuk `s` diubah menjadi indeks positif `s + i`. Jadi `-1` menjadi `s-1` (yaitu elemen terakhir). Konversi ini dilakukan secara internal sehingga awal, akhir dan langkah menerima x, -3, dan -1. Bit begin_mask yang sesuai diatur untuk menunjukkan rentang awal adalah rentang penuh (mengabaikan x).
6. `:` menunjukkan bahwa seluruh konten dari dimensi yang sesuai dipilih. Ini setara dengan `::` atau `0::1`. awal, akhir, dan langkah masing-masing menerima 0, 0, dan 1. Bit yang sesuai di `begin_mask` dan `end_mask` juga disetel.
Persyaratan : `0 != strides[i] for i in [0, m)` `elipsis_mask harus pangkat dua (hanya satu elipsis)`
Kelas Bersarang
kelas | StrededSlice.Options | Atribut opsional untuk StridedSlice |
Metode Publik
Keluaran <T> | sebagai Keluaran () Mengembalikan pegangan simbolis dari sebuah tensor. |
StridedSlice.Options statis | beginMask (Long beginMask) |
statis <T, U memperluas Angka> StrdedSlice <T> | |
StridedSlice.Options statis | EllipsisMask (Topeng Ellipsis Panjang) |
StridedSlice.Options statis | endMask (Mask ujung panjang) |
StridedSlice.Options statis | newAxisMask (AxisMask baru yang panjang) |
Keluaran <T> | keluaran () |
StridedSlice.Options statis | shrinkAxisMask (ShrinkAxisMask panjang) |
Metode yang Diwarisi
Metode Publik
Output publik <T> sebagai Output ()
Mengembalikan pegangan simbolis dari sebuah tensor.
Input ke operasi TensorFlow adalah output dari operasi TensorFlow lainnya. Metode ini digunakan untuk mendapatkan pegangan simbolis yang mewakili perhitungan input.
StridedSlice.Options public static beginMask (Long beginMask)
Parameter
mulaiMask | bitmask di mana sedikit i menjadi 1 berarti mengabaikan nilai awal dan sebagai gantinya menggunakan interval terbesar yang mungkin. Saat runtime, begin[i] akan diganti dengan `[0, n-1)` jika `stride[i] > 0` atau `[-1, n-1]` jika `stride[i] < 0` |
---|
public static StridedSlice <T> create ( Scope scope, Operand <T> input, Operand <U> start, Operand <U> end, Operand <U> strides, Options... options)
Metode pabrik untuk membuat kelas yang membungkus operasi StridedSlice baru.
Parameter
cakupan | lingkup saat ini |
---|---|
mulai | `begin[k]` menentukan offset ke dalam spesifikasi rentang `k`th. Dimensi yang tepat ini sesuai dengan akan ditentukan oleh konteks. Nilai di luar batas akan dijepit secara diam-diam. Jika bit `k`th dari `begin_mask` maka `begin[k]` diabaikan dan sebagai gantinya digunakan rentang penuh dari dimensi yang sesuai. Nilai negatif menyebabkan pengindeksan dimulai dari elemen tertinggi misalnya If `foo==[1,2,3]` lalu `foo[-1]==3`. |
akhir | `end[i]` seperti `begin` dengan pengecualian bahwa `end_mask` digunakan untuk menentukan rentang penuh. |
langkah | `strides[i]` menentukan kenaikan dalam spesifikasi `i` setelah mengekstrak elemen tertentu. Indeks negatif akan membalikkan urutan aslinya. Nilai di luar atau rentang dijepit ke `[0,dim[i]) jika irisan[i]>0` atau `[-1,dim[i]-1] jika irisan[i] < 0` |
pilihan | membawa nilai atribut opsional |
Kembali
- sebuah contoh baru dari StridedSlice
StridedSlice.Options publik statis ellipsisMask (Long ellipsisMask)
Parameter
elipsisTopeng | bitmask di mana bit `i` menjadi 1 berarti posisi `i` sebenarnya adalah elipsis. Satu bit paling banyak dapat menjadi 1. Jika `ellipsis_mask == 0`, maka topeng elipsis implisit dari `1 << (m+1)` disediakan. Ini berarti `foo[3:5] == foo[3:5, ...]`. Elipsis secara implisit membuat spesifikasi rentang sebanyak yang diperlukan untuk sepenuhnya menentukan rentang irisan untuk setiap dimensi. Misalnya untuk tensor 4 dimensi `foo` irisan `foo[2, ..., 5:8]` menyiratkan `foo[2, :, :, 5:8]`. |
---|
StridedSlice.Options publik statis endMask ( Long endMask)
Parameter
topeng akhir | analog dengan `begin_mask` |
---|
StridedSlice.Options publik statis newAxisMask ( Long newAxisMask)
Parameter
baruAxisMask | bitmask di mana bit `i` menjadi 1 berarti spesifikasi `i` membuat bentuk baru 1 dimensi. Misalnya `foo[:4, tf.newaxis, :2]` akan menghasilkan tensor bentuk `(4, 1, 2)`. |
---|
StridedSlice.Options publik statis shrinkAxisMask ( Long shrinkAxisMask)
Parameter
shrinkAxisMask | bitmask di mana bit `i` menyiratkan bahwa spesifikasi `i` harus mengecilkan dimensi. awal dan akhir harus menyiratkan sepotong ukuran 1 dalam dimensi. Misalnya dalam python seseorang mungkin melakukan `foo[:, 3, :]` yang akan menghasilkan `shrink_axis_mask` menjadi 2. |
---|