더북(TheBook)

다음은 양방향 LSTM 모델의 학습 결과입니다.

Epoch: 0, loss: 0.13400
Epoch: 100, loss: 0.12098
Epoch: 200, loss: 0.09773
Epoch: 300, loss: 0.07793
Epoch: 400, loss: 0.06332
Epoch: 500, loss: 0.05236
Epoch: 600, loss: 0.04406
Epoch: 700, loss: 0.03782
Epoch: 800, loss: 0.03319
Epoch: 900, loss: 0.02978

학습이 진행될수록 오차가 줄어들고 있어 훈련이 잘된 것 같지만 어느 정도 잘된 것인지 알기 어렵습니다. 그래프를 통해서 모델의 예측력을 알아보겠습니다. 다음 코드 역시 LSTM과 동일한 코드로 설명은 생략합니다.

코드 7-77 모델 평가

df_x_ss = ss.transform(data.iloc[:, :-1])
df_y_ms = ms.transform(data.iloc[:, -1:])

df_x_ss = Variable(torch.Tensor(df_x_ss))
df_y_ms = Variable(torch.Tensor(df_y_ms))
df_x_ss = torch.reshape(df_x_ss, (df_x_ss.shape[0], 1, df_x_ss.shape[1]))

train_predict = model(df_x_ss)
predicted = train_predict.data.numpy()
label_y = df_y_ms.data.numpy()

predicted = ms.inverse_transform(predicted)
label_y = ms.inverse_transform(label_y)
plt.figure(figsize=(10,6))
plt.axvline(x=200, c='r', linestyle='--')

plt.plot(label_y, label='Actual Data')
plt.plot(predicted, label='Predicted Data')
plt.title('Time-Series Prediction')
plt.legend()
plt.show()
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.