더북(TheBook)

VGG 모델에서 네트워크를 정의합니다. 네트워크는 코드 6-41에서 정의된 vgg11_config를 사용합니다.

코드 6-42 VGG 계층 정의

def get_vgg_layers(config, batch_norm):
    layers = []
    in_channels = 3

    for c in config: ------ vgg11_config 값들을 가져옵니다.
        assert c == 'M' or isinstance(c, int) ------ ①
        if c == 'M': ------ 불러온 값이 ‘M’이면 최대 풀링(MaxPool2d)을 적용
            layers += [nn.MaxPool2d(kernel_size = 2)]
        else: ------ 불러온 값이 숫자이면 합성곱(Conv2d) 적용
            conv2d = nn.Conv2d(in_channels, c, kernel_size=3, padding=1)
            if batch_norm: ------ 배치 정규화(batch normalization)를 적용할지에 대한 코드
                layers += [conv2d, nn.BatchNorm2d(c), nn.ReLU(inplace=True)] ------ 배치 정규화가 적용될 경우 배치 정규화+ReLU 적용       
            else:
                layers += [conv2d, nn.ReLU(inplace=True)] ------ 배치 정규화가 적용되지 않을 경우 ReLU만 적용
            in_channels = c

    return nn.Sequential(*layers) ------ 네트워크의 모든 계층을 반환
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.