cifar10_FCL_mark4

훈련 정보:

epoch = 50 # 시간관계상 짝수 epoch 마다 accuracy를 측정하도록 설계해서 epoch은 웬만하면 짝수로 설정할것
batch = 256
criterion = nn.functional.cross_entropy
optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

훈련결과:

cifar10_FCL_mark4.png

→ 20 epoch 이후에서 추론능력이 저하된걸 볼 수 있음.

train_loss, validation_loss는 둘 다 꾸준히 내려가는데 validation_accuracy가 쭉 올라갈때 test_accuracy는 어느 순간 꺾임.

오버피팅(과적함)의 정의는

[모델이 학습 데이터에 지나치게 최적화되어, 새로운 데이터에 대한 일반화 능력이 떨어지는 현상]

을 의미하니까 test_accuracy가 더이상 늘지 않는 이유 중 하나일것같음.


cifar10_FCL_mark5

모델: # 히든 레이어에서 >< 오목 적용 및 2의 제곱수로 노드 개수 설정

class FCL_mark5(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = torch.nn.Linear(3 * 32 * 32, 1024)
        self.fc2 = torch.nn.Linear(1024, 128)
        self.fc3 = torch.nn.Linear(128, 1024)
        self.fc4 = torch.nn.Linear(1024, 10)
        self.relu = torch.nn.ReLU()

    def forward(self, x):
        x = torch.flatten(x, 1)
        x = self.relu(self.fc1(x))
        x = self.relu(self.fc2(x))
        x = self.relu(self.fc3(x))
        out = self.fc4(x)
        return out

훈련 정보:

    epoch = 26 # 시간관계상 짝수 epoch 마다 accuracy를 측정하도록 설계해서 epoch은 웬만하면 짝수로 설정할것
    batch = 256
    criterion = nn.functional.cross_entropy
    optimizer = optim.SGD(model.parameters(), lr=0.01, momentum=0.5)

훈련 결과: