tensor akışı:: işlem:: Uzaya Derinlik

#include <array_ops.h>

T tipi tensörler için DepthToSpace .

Özet

Verileri derinlikten uzamsal veri bloklarına yeniden düzenler. Bu SpaceToDepth'in ters dönüşümüdür. Daha spesifik olarak, bu işlem, depth boyutundan gelen değerlerin uzamsal bloklar halinde height ve width boyutlarına taşındığı giriş tensörünün bir kopyasını çıkarır. attr block_size giriş bloğu boyutunu ve verilerin nasıl taşındığını gösterir.

  • Derinlikten itibaren block_size * block_size boyutundaki veri yığınları, block_size x block_size boyutunda örtüşmeyen bloklar halinde yeniden düzenlenir
  • Çıkış tensörünün genişliği input_depth * block_size , yüksekliği ise input_height * block_size .
  • Çıkış görüntüsünün her bloğundaki Y, X koordinatları, giriş kanalı indeksinin yüksek dereceli bileşeni tarafından belirlenir.
  • Giriş tensörünün derinliği block_size * block_size ile bölünebilir olmalıdır.

data_format özniteliği, aşağıdaki seçeneklerle giriş ve çıkış tensörlerinin düzenini belirtir: "NHWC": [ batch, height, width, channels ] "NCHW": [ batch, channels, height, width ] "NCHW_VECT_C": qint8 [ batch, channels / 4, height, width, 4 ]

İşlemi 6-D Tensörün dönüştürülmesi olarak düşünmek faydalıdır. örneğin data_format = NHWC için, Giriş tensöründeki her öğe, bellek düzeni önemini şu şekilde azaltarak sıralanan 6 koordinat aracılığıyla belirtilebilir: n,iY,iX,bY,bX,oC (burada n=toplu indeks, iX, iY, X anlamına gelir) veya giriş görüntüsü içindeki Y koordinatları, bX, bY çıkış bloğu içindeki koordinatlar anlamına gelir, oC çıkış kanalları anlamına gelir). Çıkış, aşağıdaki düzene aktarılan giriş olacaktır: n,iY,bY,iX,bX,oC

Bu işlem, örneğin havuzlama yerine, evrişimler arasındaki aktivasyonları yeniden boyutlandırmak (ancak tüm verileri tutmak) için kullanışlıdır. Tamamen evrişimsel modellerin eğitimi için de kullanışlıdır.

Örneğin, [1, 1, 1, 4] şeklinde bir giriş verildiğinde, data_format = "NHWC" ve blok_size = 2:

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

  


 

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


 


   

 Burada giriş 1'lik bir partiye sahiptir ve her parti elemanı [1, 1, 4] şekline sahiptir, karşılık gelen çıktı 2x2 elemana sahip olacak ve 1 kanal derinliğine sahip olacaktır (1 = 4 / (block_size * block_size) ). Çıkış elemanı şekli [2, 2, 1] şeklindedir.

Daha büyük derinliğe sahip bir giriş tensörü için, burada [1, 1, 1, 12] şeklindedir, örneğin

 Bu işlem, 2 blok boyutu için, aşağıdaki [1, 2, 2, 3] şeklindeki tensörü döndürecektir.