더북(TheBook)

코드를 실행하면 다음과 같이 모델 훈련 결과가 출력됩니다.

Iteration: 500, Loss: 0.5627565979957581, Accuracy: 82.70999908447266%
Iteration: 1000, Loss: 0.4662465751171112, Accuracy: 84.4000015258789%
Iteration: 1500, Loss: 0.33023178577423096, Accuracy: 84.41000366210938%
Iteration: 2000, Loss: 0.3131774067878723, Accuracy: 85.05999755859375%
Iteration: 2500, Loss: 0.28404906392097473, Accuracy: 86.26000213623047%
Iteration: 3000, Loss: 0.31252551078796387, Accuracy: 86.4800033569336%

최종적으로 정확도가 86%로 높은 수치를 보여 줍니다. 심층 신경망에 대한 모델 생성과 성능을 평가해 보았다면, 이제 합성곱 신경망을 생성해 보겠습니다.

코드 5-9 합성곱 네트워크 생성

class FashionCNN(nn.Module):
    def __init__(self):
        super(FashionCNN, self).__init__()
        self.layer1 = nn.Sequential( ------ ①
            nn.Conv2d(in_channels=1, out_channels=32, kernel_size=3, padding=1), ------ ②
            nn.BatchNorm2d(32), ------ ③
            nn.ReLU(),
            nn.MaxPool2d(kernel_size=2, stride=2) ------ ④
        )
        self.layer2 = nn.Sequential(
            nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3),
            nn.BatchNorm2d(64),
            nn.ReLU(),
            nn.MaxPool2d(2)
        )
        self.fc1 = nn.Linear(in_features=64*6*6, out_features=600) ------ ⑤
        self.drop = nn.Dropout2d(0.25)
        self.fc2 = nn.Linear(in_features=600, out_features=120)
        self.fc3 = nn.Linear(in_features=120, out_features=10) ------ 마지막 계층의 out_features는 클래스 개수를 의미

    def forward(self, x):
        out = self.layer1(x)
        out = self.layer2(out)
        out = out.view(out.size(0), -1) ------ ⑥
        out = self.fc1(out)
        out = self.drop(out)
        out = self.fc2(out)
        out = self.fc3(out)
        return out
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.