다음은 양방향 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()
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.