더북(TheBook)

그리고 마지막으로 ResNet18에 추가된 완전연결층은 학습을 하도록 설정합니다. 학습을 통해 얻어지는 파라미터를 옵티마이저에 전달해서 최종적으로 모델 학습에 사용합니다.

코드 5-21 파라미터 학습 결과를 옵티마이저에 전달

params_to_update = []
for name, param in resnet18.named_parameters():
    if param.requires_grad == True:
        params_to_update.append(param) ------ 파라미터 학습 결과를 저장
        print("\t", name)

optimizer = optim.Adam(params_to_update) ------ 학습 결과를 옵티마이저에 전달

다음은 완전연결층의 어떤 파라미터들이 옵티마이저로 전달되는지를 보여 줍니다. 다음 결과와 같이 weightbias 값들이 업데이트되고 옵티마이저에 전달될 것입니다.

fc.weight
fc.bias

이제 모델을 학습시킵니다.

코드 5-22 모델 학습

device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
criterion = nn.CrossEntropyLoss() ------ 손실 함수 지정
train_acc_hist, train_loss_hist = train_model(resnet18, train_loader, criterion, optimizer, device)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.