더북(TheBook)

데이터셋과 모델의 네트워크가 준비되었기 때문에 이제 모델을 학습시킵니다.

코드 9-35 모델 학습

for epoch in range(epochs):
    iteration_loss = 0. ------ 변수를 0으로 초기화
    iteration_accuracy = 0.

    model.train() ------ 모델 학습
    for i, data in enumerate(train_loader): ------ 데이터로더에서 훈련 데이터셋을 배치 크기만큼 불러옵니다.
        X, y = data
        y_pred = model(X.float()) ------ 독립 변수를 모델에 적용하여 훈련
        loss = BCE(y_pred, y.reshape(-1,1).float()) ------ 모델에 적용하여 훈련시킨 결과와 정답(레이블)을 손실 함수에 적용

        iteration_loss += loss ------ 오차 값을 변수에 누적하여 저장
        iteration_accuracy += accuracy(y_pred, y) ------ 모델 성능(정확도)을 변수에 누적하여 저장
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
    if(epoch % print_epoch == 0):
        print('Train: epoch: {0} - loss: {1:.5f}; acc: {2:.3f}'.format(epoch, iteration_loss/(i+1), iteration_accuracy/(i+1)))

    iteration_loss = 0.
    iteration_accuracy = 0.
    model.eval() ------ 모델 검증(테스트)
    for i, data in enumerate(test_loader): ------ 데이터로더에서 테스트 데이터셋을 배치 크기만큼 불러옵니다.
        X, y = data
        y_pred = model(X.float())
        loss = BCE(y_pred, y.reshape(-1,1).float())
        iteration_loss += loss
        iteration_accuracy += accuracy(y_pred, y)
    if(epoch % print_epoch == 0):
        print('Test: epoch: {0} - loss: {1:.5f}; acc: {2:.3f}'.format(epoch,
              iteration_loss/(i+1), iteration_accuracy/(i+1)))
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.