이번 실습에서는 Tensorflow를 통해 모델을 저장하는 방법을 알아보도록 하겠습니다.
Tensorflow에서 모델을 저장하기 위해 사용하는 형식은 H5 Format과 SavedModel 두 가지가 있습니다. 실습에서는 두 가지 방식으로 각각 저장하는 방법을 실습 해보도록 하겠습니다.
모델 저장 실습을 위해 간단한 CNN 모델을 만들고 1회 학습을 진행할 것입니다. 이를 위해 데이터셋은 MNIST 데이터셋을 사용할 것입니다.
main 함수 내에서 H5 형식으로 모델을 저장하는 코드를 완성하세요.h5_model.h5로 해야 합니다.main 함수 내에서 SavedModel 형식으로 모델을 저장하는 코드를 완성하세요.saved_model로 해야 합니다.이번 실습에서는 저장된 모델을 불러오는 과정을 실습하겠습니다. 특히, 코드에서 모델에 대한 정보를 정의하지 않고 저장된 모델을 불러와 모델의 구조를 포함한 정보들을 출력해보겠습니다.
이번 실습을 위해서 afterfit이라는 이름으로 SavedModel 형식의 모델과 체크포인트 파일들을 준비했습니다.
지시사항을 보고 저장된 모델을 불러오세요.
model.save("./afterfit")
Copy
loaded_model에 저장하세요ckpt=tf.keras.callbacks.ModelCheckpoint("./checkpoints/cp-{epoch:04d}.ckpt")
# 학습을 위한 중간 과정
fcl_model.fit(x_train, y_train, epochs= 10,validation_data=(x_val, y_val), validation_freq=1,callbacks=[ckpt])
Copy
5번째 체크포인트를 불러오는 코드를 작성하세요이번 실습에서는 학습 과정에서 기록된 체크포인트들 중에서 특정 시점의 체크포인트를 불러오고 그 지점부터 이어서 학습하는 과정을 실습하겠습니다.
실습 폴더의 checkpoints 디렉토리 안에는 cp-0001.ckpt부터 cp-0010.ckpt이 존재합니다.
이번 실습에서는 10번째 체크포인트 cp-0010.ckpt를 불러와 이어서 5 epoch을 더 학습시켜보겠습니다.
이번 실습에서 결과를 빠르게 보기 위해서 테스트 데이터로 학습을 진행하겠습니다.
checkpnt_path에 10번째 체크포인트의 경로를 저장하세요model에 checkpnt_path에 저장된 체크포인트를 불러오세요.epoch과 initial_epoch을 설정하세요이번 실습에서는 MNIST dataset으로 분류된 모델을 서비스하는 방법을 알아보겠습니다. 학습된 모델은 mymodel이라는 이름으로 저장되어 있습니다.
사용자는 /?img=two.png 처럼 서버에 이미지의 URL을 전달하고, 서버는 해당 URL에서 이미지를 불러와 모델에 맞는 형태로 바꾸어 예측하고, 그 결과를 돌려줍니다.
이번 실습에서는 실제 이미지가 아닌 img 디렉토리 내의 이미지'two.png'혹은 'seven.png'를 입력 받는다고 가정하고 서비스하겠습니다.

지시사항을 보고 코드를 완성하세요
모델을 사용하는 코드는work 함수에 작성되어 있습니다. 이 함수는 이미지를 모델에 입력하고 출력 값을 해석하여 수치를 리턴합니다. 아래 지시사항을 보고 코드를 작성하세요.
if __name__ == "__main__":에서 불러옵니다. mymodel이라는 이름으로 저장된 모델을 불러오세요.img를 model을 이용하여 예측합니다. 예측은 predict함수를 사용합니다.pred에는 batch 단위의 결과 값이 저장되어 있습니다. 본 실습에서는 이미지를 한개만 입력하므로 첫번째 결과를 출력하여 pred에 저장하세요pred에는 0부터 9까지 각각의 비율이 들어있습니다. 결과 값은 비율이 가장 높은 값이므로 해당 값을 tf.math.argmax함수를 이용하여 찾아서 idx에 저장하세요