У Олексія Крижевського та ін. Класифікація Imagenet із глибокими звивистими нейронними мережами вони перераховують кількість нейронів у кожному шарі (див. Схему нижче).
Вхід в мережу є 150 528-мірним, а кількість нейронів у решті шарів мережі визначається 253,440–186,624–64,896–64,896–43,264– 4096–4096–1000.
3D-перегляд
Кількість нейронів для всіх шарів після першого зрозуміла. Один простий спосіб обчислити нейрони - просто помножити три виміри цього шару ( planes X width X height
):
- Шар 2:
27x27x128 * 2 = 186,624
- 3 рівень:
13x13x192 * 2 = 64,896
- тощо.
Однак, дивлячись на перший шар:
- Шар 1:
55x55x48 * 2 = 290400
Зауважте, що це не так, 253,440
як зазначено в папері!
Обчислити вихідний розмір
Інший спосіб обчислити вихідний тензор згортки:
Якщо вхідне зображення є 3D тензором
nInputPlane x height x width
, розмір вихідного зображення будеnOutputPlane x owidth x oheight
де
owidth = (width - kW) / dW + 1
oheight = (height - kH) / dH + 1
.
(з Документації про просторову конверсію факела )
Вхідне зображення:
nInputPlane = 3
height = 224
width = 224
А шар згортки:
nOutputPlane = 96
kW = 11
kH = 11
dW = 4
dW = 4
(наприклад, розмір ядра 11
, крок 4
)
Підключивши ці числа, ми отримаємо:
owidth = (224 - 11) / 4 + 1 = 54
oheight = (224 - 11) / 4 + 1 = 54
Таким чином, ми маємо один із тих 55x55
розмірів, які нам потрібні, щоб відповідати папері. Вони можуть бути прокладками (але cuda-convnet2
модель явно встановлює обкладку на 0)
Якщо взяти 54
великі розміри, ми отримаємо 96x54x54 = 279,936
нейрони - все одно занадто багато.
Отже, моє запитання таке:
Як вони отримують 253,440 нейронів для першого згорткового шару? Що я пропускаю?