모델 학습을 위해 필요한 변수 값들을 설정합니다.
코드 7-48 변수 값 설정
num_epochs = 1000 ------ 1000번의 에포크
learning_rate = 0.0001 ------ 학습률을 0.0001로 지정
input_size = 5 ------ 입력 데이터셋의 칼럼(feature) 개수
hidden_size = 2 ------ 은닉층의 뉴런/유닛 개수
num_layers = 1 ------ LSTM 계층의 개수
num_classes = 1 ------ 클래스 개수
model = LSTM(num_classes, input_size, hidden_size, num_layers, X_train_tensors_f.shape[1]) ------ 앞에서 정의한 값들을 이용하여 LSTM 모델 학습
criterion = torch.nn.MSELoss()
optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)
이제 모델을 학습시킵니다.
코드 7-49 모델 학습
for epoch in range(num_epochs): ------ 1000번 반복
outputs = model.forward(X_train_tensors_f) ------ 전방향(forward) 학습
optimizer.zero_grad()
loss = criterion(outputs, y_train_tensors) ------ 손실 함수를 이용한 오차 계산(모델 학습 결과(outputs)와 레이블(y_train_tensors)의 차이 계산)
loss.backward() ------ 기울기 계산
optimizer.step() ------ 오차 업데이트
if epoch % 100 == 0: ------ 1000을 100으로 나누어 나머지가 0이면 출력
print("Epoch: %d, loss: %1.5f" % (epoch, loss.item()))