Ch19. Special Methods

  • 위의 내용 외에 실제로 훈련시에 자주 활용되는 기법들을 공개합니다.

Model Save, Load

  • Model을 저장하고 불러와야하는 경우가 생깁니다.
  • 저장은 Keras의 Callback중 체크포인트 저장을 통해서 할 수 있습니다.
  • 혹은 다음과 같은 방법을 통해서도 가능합니다. ```python model.fit(x, y) model.save(“/path/to/save/model.h5”) # 모델 저장

import tensorflow as tf loaded_model = tf.keras.models.load_model(“/path/to/save/model.h5”)

* 보통의 경우 h5로 저장합니다. 이렇게 저장하면 다른 세팅 없이 불러와 사용할 수 있습니다.

## Model Save, Load 2
* 그러나, Subclass API를 통해 복잡하게 모델을 정의했다면 이런 방법으로는 저장이 되지 않습니다.
* 가중치만 저장해서 모델에 불러오는 방식으로 진행해야 합니다.

#### Train.py
```python
model.fit(x, y)
model.save_weights("/path/to/save/model.ckpt") # 모델 저장
  • 두개의 코드에서 나눠서 진행한다고 할 때, 우선 ckpt파일로 save_weight를 진행합니다.
  • ckpt같은 확장자를 안써주면, 폴더 형식으로 저장이 됩니다. 이렇게 해도 됩니다.

Test.py or Inference.py

model = ExModel() # 모델의 레이어를 정의하고
model.compile(...) # 컴파일까지 진행한 후
model.load_weights("/path/to/save/model") # 그곳에 가중치를 입력하는 방식
  • 이 방식은 가중치만 저장했기 때문에, 가중치가 아닌 레이어나 옵티마이저 등은 따로 만들어주어야 합니다.
  • 따로 정의해서 weights를 입력합니다.

History Plot

  • 훈련과정에서 Loss, val_loss 등을 저장해야하는데, 진행상황을 저장하고 싶은 경우가 생깁니다.
  • 이 경우, History Plot을 그려서 저장해줍니다. ```python history = model.fit(x, y) # fit을 할 때, history에 결과를 할당하면, 결과가 저장됩니다.

import matplotlib.pyplot as plt plt.plot(history.history[‘accuracy’]) # 훈련시에 넣어준 metric의 변수명으로 동작합니다. plt.plot(history.history[‘val_accuracy’]) plt.title(‘Model accuracy’) plt.xlabel(‘Epoch’) plt.ylabel(‘Accuracy’) plt.legend([‘Train’, ‘Test’], loc=’upper left’) plt.show() # 로컬이나 주피터의 경우 plt.savefig(“path/to/save/figure.png”) # 서버의 python 환경 ```

More and More

  • Special Lesson의 경우, 계속하여 추가됩니다.
  • 이 교재에 있는 내용을 알았으면, 그 이후는 본인이 모델을 사용해가면서 배우면 됩니다.

Copyright © 2023 Junseo Ko. 본 내용은 모두 제가 작성한 도큐먼트입니다. 무단 퍼가기와 재생산을 금지합니다. 문의: piglets.frizzle0v@icloud.com