더북(TheBook)

모델 학습에서 사용할 옵티마이저와 손실 함수를 정의합니다.

코드 6-53 옵티마이저와 손실 함수 정의

optimizer = optim.Adam(model.parameters(), lr=1e-7)
criterion = nn.CrossEntropyLoss()

model = model.to(device)
criterion = criterion.to(device)

모델에 대한 정확도를 측정하기 위한 함수를 정의합니다.

코드 6-54 모델 정확도 측정 함수

def calculate_accuracy(y_pred, y):
    top_pred = y_pred.argmax(1, keepdim=True)
    correct = top_pred.eq(y.view_as(top_pred)).sum() ------ ①
    acc = correct.float() / y.shape[0]
    return acc

① 예측이 정답과 일치하는 경우 그 개수의 합을 correct 변수에 저장합니다.

eq는 equal의 약자로 서로 같은지를 비교하는 표현식입니다.

view_as(other)는 other의 텐서 크기를 사용하겠다는 의미입니다. 즉, view_as(other)view(other.size())와 같은 의미입니다. 따라서 y.view_as(top_pred)y에 대한 텐서 크기를 top_pred의 텐서 크기로 변경하겠다는 의미입니다.

ⓒ 합계를 구하는 것으로, 여기에서는 예측과 정답이 일치하는 것들의 개수를 합산하겠다는 의미입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.