논문을 작성하기 위해 기웃거리던 중 기록이 가장 중요하다는 것을 알았다. 데이터의 형태, 모델의 구성, 학습의 결과 등 논문을 구성하는 요소는 많지만 이런 것들을 잘 기록을 해야한다. 그래서 이번에는 학습의 결과를 기록하는 방법에 대해서 알아보려고 한다.
keras.callbacks.History()
에 구현이 되어있다. model.fit()
함수는 항상 history를 리턴한다. fit 함수가 리턴한 history의 멤버 history는 딕셔너리 형태이다.
딕셔너리의 key는 fit함수의 매개변수에 따라서 정해지는듯하다.
딕셔너리의 value가 리스트 형식이기 때문에 matplot으로 시각화할 수 있다.
import matplotlib.pyplot as plt
fig, loss_ax = plt.subplots()
acc_ax = loss_ax.twinx()
loss_ax.plot(history.history['loss'], 'y', label='train loss')
loss_ax.plot(history.history['val_loss'], 'r', label='val loss')
loss_ax.set_xlabel('epoch')
loss_ax.set_ylabel('loss')
loss_ax.legend(loc='upper left')
acc_ax.plot(history.history['accuracy'], 'b', label='train accuracy')
acc_ax.plot(history.history['val_accuracy'], 'g', label='val accuracy')
acc_ax.set_ylabel('accuracy')
acc_ax.legend(loc='upper left')
plt.show()
이런식으로 시각화할 수 있다. 굳이 matplot이 아니더라도 여러 라이브러리로 시각화 할 수 있어보인다. 나중에 필요한 형태의 그래프가 생기면 그때 원하는 형태의 그래프를 그리도록 하자
TensorBoard가 다른 시각화 라이브러리들과 다른점은 실시간으로 학습상태를 확인할 수 있다는 것이다. 시각화 라이브러리는 학습이 끝난 후 리턴되는 history로 시각화를 하지만 TensorBoard는 실시간으로 그래프를 그려준다.
사용법은 공식문서에 잘 나와있다. 어쩌면 tensorboard 하나만으로도 논문에 필요한 재료들을 모두 모을 수 있을 것 같다.