SpaceToBatch untuk tensor ND tipe T.
Operasi ini membagi dimensi "spasial" `[1, ..., M]` dari input ke dalam kotak blok berbentuk `block_shape`, dan menyisipkan blok ini dengan dimensi "batch" (0) sedemikian rupa sehingga dalam output , dimensi spasial `[1, ..., M]` sesuai dengan posisi di dalam kisi, dan dimensi kumpulan menggabungkan posisi dalam blok spasial dan posisi kumpulan asli. Sebelum dibagi ke dalam blok, dimensi spasial input secara opsional diisi nol menurut `paddings`. Lihat di bawah untuk deskripsi yang tepat.
Operasi ini setara dengan langkah-langkah berikut:
1. Zero-pad awal dan akhir dimensi `[1, ..., M]` dari input sesuai dengan `paddings` untuk menghasilkan `padded` dari bentuk `padded_shape`.
2. Bentuk ulang `padded` menjadi `reshaped_padded` dari bentuk:
[batch] + [padded_shape[1] / block_shape[0], block_shape[0], ..., padded_shape[M] / block_shape[M-1], block_shape[M-1]] + sisa_bentuk
3. Permutasi dimensi `reshaped_padded` untuk menghasilkan bentuk `permuted_reshaped_padded`:
block_shape + [batch] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + sisa_shape
4. Bentuk ulang `permuted_reshaped_padded` untuk meratakan `block_shape` ke dalam dimensi batch, menghasilkan tensor keluaran bentuk:
[batch * prod(block_shape)] + [padded_shape[1] / block_shape[0], ..., padded_shape[M] / block_shape[M-1]] + sisa_shape
Beberapa contoh:
(1) Untuk input berikut dari bentuk `[1, 2, 2, 1]`, `block_shape = [2, 2]`, dan `paddings = [[0, 0], [0, 0]]`:
x = [[[[1], [2]], [[3], [4]]]]
Tensor keluaran memiliki bentuk `[4, 1, 1, 1]` dan nilai: [[[[1]]], [[[2]]], [[[3]]], [[[4]]]]
(2) Untuk input bentuk berikut `[1, 2, 2, 3]`, `block_shape = [ 2, 2]`, dan `paddings = [[0, 0], [0, 0]]`: x = [[[[1, 2, 3], [4, 5, 6]],
[[7, 8, 9], [10, 11, 12]]]]
Tensor keluaran memiliki bentuk `[4, 1, 1, 3]` dan nilai: [[[[1, 2, 3]]], [[[4, 5, 6]]], [[[7, 8, 9]]], [[[10, 11, 12]]]]
(3) Untuk input bentuk berikut `[1, 4, 4, 1]`, `block_shape = [2, 2]`, dan `paddings = [[0, 0], [0, 0]]`: x = [[[[1], [2], [3], [4]],
[[5], [6], [7], [8]],
[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]]
Tensor output memiliki bentuk `[4, 2, 2, 1]` dan nilai: x = [[[[1], [3]], [[9], [11]]],
[[[2], [4]], [[10], [12]]],
[[[5], [7]], [[13], [15]]],
[[[6], [8]], [[14], [16]]]]
(4) Untuk input bentuk berikut `[2, 2, 4, 1]`, block_shape = `[ 2, 2]`, dan padding = `[[0, 0], [2, 0]]`: x = [[[[1], [2], [3], [4]],
[[5], [6], [7], [8]]],
[[[9], [10], [11], [12]],
[[13], [14], [15], [16]]]]
Tensor keluaran memiliki bentuk `[8, 1, 3, 1]` dan nilai: x = [[[[0], [1], [3]]], [[[0], [9], [11]]],
[[[0], [2], [4]]], [[[0], [10], [12]]],
[[[0], [5], [7]]], [[[0], [13], [15]]],
[[[0], [6], [8]]], [[[0], [14], [16]]]]
Antara lain, operasi ini berguna untuk mengurangi konvolusi atrous menjadi konvolusi reguler. Metode Publik
Keluaran <T> | sebagai Keluaran () Mengembalikan pegangan simbolis dari sebuah tensor. |
static <T, U perpanjang Angka, V perpanjang Angka> SpaceToBatchNd <T> | |
Keluaran <T> | keluaran () |
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.
publik statis SpaceToBatchNd <T> buat ( Cakupan lingkup, input Operand <T>, Operand <U> blockShape, bantalan Operand <V>)
Metode pabrik untuk membuat kelas yang membungkus operasi SpaceToBatchNd baru.
Parameter
cakupan | lingkup saat ini |
---|---|
memasukkan | ND dengan bentuk `input_shape = [batch] + spatial_shape + sisa_shape`, di mana spatial_shape memiliki dimensi `M`. |
bentuk balok | 1-D dengan bentuk `[M]`, semua nilai harus >= 1. |
bantalan | 2-D dengan bentuk `[M, 2]`, semua nilai harus >= 0. `paddings[i] = [pad_start, pad_end]` menentukan padding untuk dimensi input `i + 1`, yang sesuai dengan dimensi spasial `saya`. Diperlukan bahwa `block_shape[i]` membagi `input_shape[i + 1] + pad_start + pad_end`. |
Kembali
- contoh baru SpaceToBatchNd