모델 저장과 복원 | TensorFlow Core
모델 저장과 복원 모델 진행 상황은 훈련 중 및 훈련 후에 저장할 수 있습니다. 즉, 모델이 중단된 위치에서 다시 시작하고 긴 훈련 시간을 피할 수 있습니다. 저장은 또한 모델을 공유할 수 있고
www.tensorflow.org
러닝 도중에 진행 상황을 저장하는 방법이 있다. 이렇게 하면 좋은 점이 갑자기 중단, 예기치 못한 상황에 다시 이어서 시작하게 되면서 시간 단축을 할 수 있다. 또한 이것을 다른사람에게 공유하여 다른 사람이 작업을 이어서 할수 있다! 러닝을 하다보면 정말 다양한 상황이 존재하므로 정말 좋은 방법이다
이제 이걸 어떻게 하는지 알아보자
tf.keras.callbacks.ModelCheckpoint
이 함수를 사용하면 된다. 이름도 모델의 체크포인트를 콜백(불러낸다)이다.
특징 이 코드는 텐서플로 체크포인트 파일을 만들고 에포크가 종료될 때마다 업데이트합니다:
ex)
# 파일 이름에 에포크 번호를 포함시킵니다(`str.format` 포맷)
checkpoint_path = "training_2/cp-{epoch:04d}.ckpt"
checkpoint_dir = os.path.dirname(checkpoint_path)
# 다섯 번째 에포크마다 가중치를 저장하기 위한 콜백을 만듭니다
cp_callback = tf.keras.callbacks.ModelCheckpoint(
filepath=checkpoint_path,
verbose=1,
save_weights_only=True,
period=5)
이 함수의 내부 변수들을 알아보자
filepath=checkpoint_path | 파일(모델)의 경로를 나타내어 주는 함수이다. |
verbose=1 | verbose는 학습의 진행 상황을 보여줄 것인지 지정을 하는데 verbose를 1로 세팅하면 학습이 되는 모습을 볼 수 있다. verbose를 1로 지정하는것이 좋아보일 수도 있지만 너무 많이 print가 찍히기 때문에 상황에 따라 설정을 하는 것이 좋아보인다. 0 인 경우 안뜨게 할 수 있다. |
save_weights_only=True | True인 경우, 모델의 weights만 저장됩니다.False인 경우, 모델 레이어 및 weights 모두 저장됩니다. |
period=5 | 이건 이전 버전의 것 같은데? 저장 주기를 나타 내는 것 같다. 5번째 에포크마다 가중치를 저장하는 것에 사용하는 것인거 같다.(틀릴 수 있다.) |
# 새로운 콜백으로 모델 훈련하기
model.fit(train_images,
train_labels,
epochs=50,
# 이 내부 변수에서 콜백을 불러온다.
callbacks=[cp_callback],
validation_data=(test_images,test_labels),
verbose=0) # 콜백을 훈련에 전달합니다
더 많은 기능이 있으므로 나중에 추가로 정리하자
반응형
'AI > tensorflow' 카테고리의 다른 글
딥러닝 모델 체크 리스트 (0) | 2022.06.07 |
---|---|
[Tensorflow] 기본 및 더하기 연산 (0) | 2022.04.18 |