Saya memiliki pertanyaan yang sama dalam pikiran ketika Anda membaca buku putih itu dan sumber daya yang Anda rujuk telah membantu saya membuat implementasi.
Dalam kode obor yang Anda referensikan , tertulis:
--[[ 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 :
Kata "kedalaman" dalam pembelajaran Deep sedikit ambigu. Untungnya, Jawaban SO ini memberikan beberapa kejelasan:
Di Deep Neural Networks, kedalaman mengacu pada seberapa dalam jaringan itu tetapi dalam konteks ini, kedalaman digunakan untuk pengenalan visual dan diterjemahkan ke dalam dimensi ke-3 dari suatu gambar.
Dalam hal ini Anda memiliki gambar, dan ukuran input ini adalah 32x32x3 yaitu (lebar, tinggi, kedalaman). Jaringan saraf harus dapat belajar berdasarkan parameter ini karena kedalaman diterjemahkan ke saluran yang berbeda dari gambar pelatihan.
Jadi DepthConcat menggabungkan tensor sepanjang dimensi kedalaman yang merupakan dimensi terakhir tensor dan dalam hal ini dimensi ke-3 dari tensor 3D.
DepthConcat perlu membuat tensor sama di semua dimensi selain dimensi kedalaman, seperti yang dikatakan oleh kode Torch :
-- 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.
misalnya
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).
Dalam diagram di atas, kita melihat gambar tensor hasil DepthConcat, di mana area putih adalah bantalan nol, merah adalah tensor A dan hijau adalah tensor B.
Berikut kode semu untuk DepthConcat dalam contoh ini:
- Lihatlah tensor A dan tensor B dan temukan dimensi spasial terbesar, yang dalam hal ini adalah lebar tensor B 16 dan 16 ukuran tinggi. Karena tensor A terlalu kecil dan tidak cocok dengan dimensi spasial Tensor B, itu harus empuk.
- Pad dimensi spasial tensor A dengan nol dengan menambahkan nol ke dimensi pertama dan kedua membuat ukuran tensor A (16, 16, 2).
- Concatenate padded tensor A dengan tensor B sepanjang dimensi kedalaman (3).
Saya harap ini membantu orang lain yang berpikir pertanyaan yang sama membaca kertas putih itu.