'Kıvrımlarla daha derine inme' bölümündeki DepthConcat işlemi nasıl çalışır?


12

Okuma Kıvrımlarla daha derine inerek , önerilen başlangıç ​​modüllerinin yapı taşı olan ve farklı büyüklükteki birden fazla tansörünün çıktısını birleştiren bir DepthConcat katmanıyla karşılaştım . Yazarlar buna "Filtre Birleştirme" adını vermektedir. Meşale için bir uygulama var gibi görünüyor , ama gerçekten ne yaptığını anlamıyorum. Birisi basit kelimelerle açıklayabilir mi?

Yanıtlar:


9

Başlangıç ​​modülünün çıktısının farklı boyutlarda olduğunu düşünmüyorum .

resim açıklamasını buraya girin

Evrişimsel katmanlar için insanlar genellikle uzaysal çözünürlüğü korumak için dolgu kullanırlar.

Diğer kıvrımlı katmanlar arasında sağ alt havuzlama katmanı (mavi çerçeve) garip görünebilir. Bununla birlikte, geleneksel havuzlama-alt-örnekleme katmanlarının (kırmızı çerçeve, adım> 1) aksine , bu havuzlama katmanında 1'lik bir adım kullandılar . Adım-1 havuzlama katmanları aslında kıvrımlı katmanlarla aynı şekilde çalışır, ancak kıvrımlı işlemin yerine maksimum işlem uygulanır.

Böylece havuzlama katmanından sonraki çözünürlük de değişmeden kalır ve havuzlama ve kıvrım katmanlarını "derinlik" boyutunda birleştirebiliriz.

resim açıklamasını buraya girin

Yukarıdaki şekilde kağıttan gösterildiği gibi, başlangıç ​​modülü aslında uzaysal çözünürlüğü korur.


6

Akılda bulunduğum aynı soruyu, beyaz makaleyi okuduğunuzda ve başvuruda bulunduğunuz kaynaklar bir uygulama bulmama yardımcı oldu.

Referans verdiğiniz Torch kodunda şöyle diyor:

--[[ DepthConcat ]]--
-- Concatenates the output of Convolutions along the depth dimension
-- (nOutputFrame). This is used to implement the DepthConcat layer
-- of the Going deeper with convolutions paper :

Derin öğrenmedeki "derinlik" kelimesi biraz belirsizdir. Neyse ki bu SO Yanıt bazı netlik sağlar:

Derin Sinir Ağlarında derinlik ağın ne kadar derin olduğunu ifade eder, ancak bu bağlamda derinlik görsel tanıma için kullanılır ve bir görüntünün 3. boyutuna dönüşür.

Bu durumda bir görüntünüz var ve bu girişin boyutu 32x32x3 (genişlik, yükseklik, derinlik). Sinir ağı, derinlik egzersiz görüntülerinin farklı kanallarına dönüştüğü için bu parametrelere dayalı olarak öğrenebilmelidir.

DepthConcat, tensörleri, tensörün son boyutu olan derinlik boyutu boyunca ve bu durumda 3D tensörün 3. boyutu boyunca birleştirir.

TorthConcat'in, Torch kodunun söylediği gibi, tensörleri derinlik boyutu hariç tüm boyutlarda aynı yapması gerekir :

-- The normal Concat Module can't be used since the spatial dimensions
-- of tensors to be concatenated may have different values. To deal with
-- this, we select the largest spatial dimensions and add zero-padding
-- around the smaller dimensions.

Örneğin

A = tensor of size (14, 14, 2)
B = tensor of size (16, 16, 3)
result = DepthConcat([A, B])
where result with have a height of 16, a width of 16 and a depth of 5 (2 + 3). 

resim açıklamasını buraya girin

Yukarıdaki şemada, beyaz alanın sıfır dolgusu, kırmızı A tensörü ve yeşil B tensörü olduğu DepthConcat sonuç tensörünün bir resmini görüyoruz.

Bu örnekte DepthConcat için sözde kod:

  1. Tensör A'ya ve tensör B'ye bakın ve bu durumda tensörün B'nin 16 genişliği ve 16 yükseklik boyutu olabilecek en büyük uzamsal boyutları bulun. Tensör A çok küçük olduğundan ve Tensor B'lerin uzamsal boyutlarına uymadığından, doldurulması gerekir.
  2. Tensör A'nın (16, 16, 2) boyutunu oluşturan birinci ve ikinci boyutlara sıfırlar ekleyerek, tensörün A uzamsal boyutlarını sıfırlarla doldurun.
  3. Yastıklı tensörü A derinlik (3.) boyutu boyunca tensör B ile birleştirin.

Umarım bu aynı soruyu bu makaleyi okuyan bir başkasına yardımcı olur.


evet. mükemmel giriş. Bu derinlik yönünde birleştirilir. Mekansal yönlerde değil.
Şamane Siriwardhana
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.