더북(TheBook)

옵티마이저 및 손실 함수 등 모델에서 사용하는 파라미터를 지정합니다. 모델의 오차를 계산하는 부분과 합쳐서 모델을 정의할 수도 있지만 여기에서는 가독성을 위해 분리했습니다.

코드 10-33 모델 훈련 함수 정의

def trainModel(model, input_lang, output_lang, pairs, num_iteration=20000):
    model.train()
    optimizer = optim.SGD(model.parameters(), lr=0.01) ------ 옵티마이저로 SGD를 사용
    criterion = nn.NLLLoss() ------ ①
    total_loss_iterations = 0

    training_pairs = [tensorsFromPair(input_lang, output_lang, random.choice(pairs)) for i in range(num_iteration)]

    for iter in range(1, num_iteration+1):
        training_pair = training_pairs[iter - 1]
        input_tensor = training_pair[0]
        target_tensor = training_pair[1]
        loss = Model(model, input_tensor, target_tensor, optimizer, criterion) ------ Model 객체를 이용하여 오차 계산
        total_loss_iterations += loss

        if iter % 5000 == 0: ------ 5000번째마다 오차 값에 대해 출력
            average_loss= total_loss_iterations / 5000
            total_loss_iterations = 0
            print('%d %.4f' % (iter, average_loss))

    torch.save(model.state_dict(), '../chap10/data/mytraining.pt')
    return model
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.