Dalam Alex Krizhevsky, et al. Klasifikasi imagenet dengan jaringan saraf convolutional yang mendalam mereka menyebutkan jumlah neuron di setiap lapisan (lihat diagram di bawah).
Input jaringan adalah 150.528-dimensi, dan jumlah neuron dalam lapisan jaringan yang tersisa diberikan oleh 253.440–186.624–64.889–64.889–43.264–4096–4096–1000.
Tampilan 3D
Jumlah neuron untuk semua lapisan setelah yang pertama jelas. Salah satu cara sederhana untuk menghitung neuron adalah dengan hanya mengalikan tiga dimensi dari lapisan itu ( planes X width X height
):
- Layer 2:
27x27x128 * 2 = 186,624
- Layer 3:
13x13x192 * 2 = 64,896
- dll.
Namun, melihat lapisan pertama:
- Lapisan 1:
55x55x48 * 2 = 290400
Perhatikan bahwa ini tidak 253,440
seperti yang ditentukan di koran!
Hitung Ukuran Output
Cara lain untuk menghitung tensor keluaran konvolusi adalah:
Jika gambar input adalah tensor 3D
nInputPlane x height x width
, ukuran gambar output akan berada dinOutputPlane x owidth x oheight
tempat
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(dari Dokumentasi SpatialConvolution Torch )
Gambar input adalah:
nInputPlane = 3
height = 224
width = 224
Dan lapisan konvolusi adalah:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(mis. ukuran kernel 11
, langkah 4
)
Memasukkan angka-angka itu kita dapatkan:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
Jadi kita kekurangan 55x55
dimensi yang kita butuhkan untuk mencocokkan kertas. Mereka mungkin padding (tetapi cuda-convnet2
model secara eksplisit menetapkan padding ke 0)
Jika kita mengambil 54
dimensi -ukuran kita mendapatkan 96x54x54 = 279,936
neuron - masih terlalu banyak.
Jadi pertanyaan saya adalah ini:
Bagaimana mereka mendapatkan 253.440 neuron untuk lapisan konvolusional pertama? Apa yang saya lewatkan?