Convolution Layers, Pooling Layers, Fully-Connected Layers, Activation Function, Normalization
Local response normalization (LRN) - 더 이상 사용하지 않음
GPU 한 개 당 3GB밖에 안 돼서 2개의 GTX 580을 이용해 Training
conv 단계에서는 flops가 많고 fc 단계에서는 params가 많은 경향
모든 conv가 3x3 stride 1 pad 1
모든 max pool이 2x2 stride 2
pool 이후에 #channels을 2배 → params가 커지지만 memory 절약
5x5 conv 1번보다 3x3 2번하는 것이 효율 좋음 → 같은 receptive field이지만 params, flops가 더 적음
layer가 너무 많아지면 underfitting → Deeper model이 optimize하기 어렵고 Shallow models를 모방하기 위해서 identity function을 학습하는 것이 불가능함
→ identity function을 학습하는 extra layer를 만들면 됨
Gradient vanishing problem 해결, Optimal mapping이 Identity mapping일 때의 문제 해결
각각의 stage의 첫번째 block은 stride-2 conv를 이용해 resolution을 반으로 줄이고 channel을 2배로 늘림
GoogleNet과 같은 aggressive stem을 사용하여 residual block을 사용하기 전에 downsample
FC 대신에 GAP 사용
Bottleneck Block → More layers, less computational cost