aliran tensor:: operasi:: DepthToSpace

#include <array_ops.h>

DepthToSpace untuk tensor tipe T.

Ringkasan

Menyusun ulang data dari kedalaman menjadi blok data spasial. Ini adalah transformasi kebalikan dari SpaceToDepth. Lebih khusus lagi, operasi ini menghasilkan salinan tensor masukan di mana nilai dari dimensi depth dipindahkan dalam blok spasial ke dimensi height dan width . attr block_size menunjukkan ukuran blok masukan dan cara data dipindahkan.

  • Potongan data berukuran block_size * block_size dari kedalaman disusun ulang menjadi blok-blok yang tidak tumpang tindih dengan ukuran block_size x block_size
  • Lebar tensor keluarannya adalah input_depth * block_size , sedangkan tingginya adalah input_height * block_size .
  • Koordinat Y, X dalam setiap blok gambar keluaran ditentukan oleh komponen tingkat tinggi dari indeks saluran masukan.
  • Kedalaman tensor masukan harus habis dibagi block_size * block_size .

attr data_format menentukan tata letak tensor input dan output dengan opsi berikut: "NHWC": [ batch, height, width, channels ] "NCHW": [ batch, channels, height, width ] "NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]

Penting untuk mempertimbangkan operasi ini sebagai transformasi Tensor 6-D. misalnya untuk data_format = NHWC, Setiap elemen dalam tensor masukan dapat ditentukan melalui 6 koordinat, diurutkan dengan mengurangi signifikansi tata letak memori sebagai: n,iY,iX,bY,bX,oC (di mana n=indeks batch, iX, iY berarti X atau koordinat Y dalam gambar masukan, bX, bY berarti koordinat dalam blok keluaran, oC berarti saluran keluaran). Outputnya akan menjadi input yang dialihkan ke tata letak berikut: n,iY,bY,iX,bX,oC

Operasi ini berguna untuk mengubah ukuran aktivasi antar konvolusi (tetapi menyimpan semua data), misalnya, alih-alih mengumpulkan. Hal ini juga berguna untuk melatih model konvolusional murni.

Misalnya, jika diberi masukan bentuk [1, 1, 1, 4] , data_format = "NHWC" dan block_size = 2:

x = [[[[1, 2, 3, 4]]]]

  


 

This operation will output a tensor of shape [1, 2, 2, 1]:


 


   

 Di sini, masukan memiliki kumpulan 1 dan setiap elemen kumpulan memiliki bentuk [1, 1, 4] , keluaran yang sesuai akan memiliki elemen 2x2 dan akan memiliki kedalaman 1 saluran (1 = 4 / (block_size * block_size) ). Bentuk elemen keluarannya adalah [2, 2, 1] .

Untuk tensor masukan dengan kedalaman lebih besar, bentuk berikut [1, 1, 1, 12] , misalnya

 Operasi ini, untuk ukuran blok 2, akan mengembalikan bentuk tensor berikut [1, 2, 2, 3]