① 각 레지듀얼 분기(residual branch)에 있는 마지막 BN(Batch Normalization)을 0으로 초기화해서 다음 레지듀얼 분기를 0에서 시작할 수 있도록 합니다. 이 부분은 모델을 생성하고 학습시키는 것과는 상관없지만, 다음 URL 논문에 의하면 BN을 0으로 초기화할 경우 모델 성능이 0.2~0.3% 정도 향상된다고 합니다. 따라서 ResNet에서는 많이 사용되고 있습니다.
https://arxiv.org/abs/1706.02677
참고로 레지듀얼 분기란 프로그램에서의 조건에 따라 A, B, C 등으로 분기하는 것과 같습니다.
▲ 그림 6-33 레지듀얼 분기
ResNetConfig 변수에 네임드튜플 데이터 형식으로 ['block', 'n_blocks', 'channels']를 저장합니다.
코드 6-76 ResNetConfig 정의
ResNetConfig = namedtuple('ResNetConfig', ['block', 'n_blocks', 'channels'])