6-1. 모델 저장하기

이번 실습에서는 Tensorflow를 통해 모델을 저장하는 방법을 알아보도록 하겠습니다.

Tensorflow에서 모델을 저장하기 위해 사용하는 형식은 H5 FormatSavedModel 두 가지가 있습니다. 실습에서는 두 가지 방식으로 각각 저장하는 방법을 실습 해보도록 하겠습니다.

지시사항

모델 저장 실습을 위해 간단한 CNN 모델을 만들고 1회 학습을 진행할 것입니다. 이를 위해 데이터셋은 MNIST 데이터셋을 사용할 것입니다.

H5 Format으로 모델 저장하기

SavedModel로 모델 저장하기

6-2. 모델 불러오기

이번 실습에서는 저장된 모델을 불러오는 과정을 실습하겠습니다. 특히, 코드에서 모델에 대한 정보를 정의하지 않고 저장된 모델을 불러와 모델의 구조를 포함한 정보들을 출력해보겠습니다.

이번 실습을 위해서 afterfit이라는 이름으로 SavedModel 형식의 모델과 체크포인트 파일들을 준비했습니다.

지시사항을 보고 저장된 모델을 불러오세요.

지시사항

SavedModel 형식 모델 불러오기

model.save("./afterfit")
Copy

5번째 체크포인트 불러오기

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

6-3. 이어서 모델 학습하기

이번 실습에서는 학습 과정에서 기록된 체크포인트들 중에서 특정 시점의 체크포인트를 불러오고 그 지점부터 이어서 학습하는 과정을 실습하겠습니다.

실습 폴더의 checkpoints 디렉토리 안에는 cp-0001.ckpt부터 cp-0010.ckpt이 존재합니다.

이번 실습에서는 10번째 체크포인트 cp-0010.ckpt를 불러와 이어서 5 epoch을 더 학습시켜보겠습니다.

이번 실습에서 결과를 빠르게 보기 위해서 테스트 데이터로 학습을 진행하겠습니다.

지시사항

체크포인트 불러오기

이어서 학습하기

6-5. Flask로 서비스하기

이번 실습에서는 MNIST dataset으로 분류된 모델을 서비스하는 방법을 알아보겠습니다. 학습된 모델은 mymodel이라는 이름으로 저장되어 있습니다.

사용자는 /?img=two.png 처럼 서버에 이미지의 URL을 전달하고, 서버는 해당 URL에서 이미지를 불러와 모델에 맞는 형태로 바꾸어 예측하고, 그 결과를 돌려줍니다.

이번 실습에서는 실제 이미지가 아닌 img 디렉토리 내의 이미지'two.png'혹은 'seven.png'를 입력 받는다고 가정하고 서비스하겠습니다.

img

지시사항을 보고 코드를 완성하세요

지시사항

모델을 사용하는 코드는work 함수에 작성되어 있습니다. 이 함수는 이미지를 모델에 입력하고 출력 값을 해석하여 수치를 리턴합니다. 아래 지시사항을 보고 코드를 작성하세요.

  1. 모델은 if __name__ == "__main__":에서 불러옵니다. mymodel이라는 이름으로 저장된 모델을 불러오세요.
  2. 전달받은 imgmodel을 이용하여 예측합니다. 예측은 predict함수를 사용합니다.
  3. pred에는 batch 단위의 결과 값이 저장되어 있습니다. 본 실습에서는 이미지를 한개만 입력하므로 첫번째 결과를 출력하여 pred에 저장하세요
  4. 이제 pred에는 0부터 9까지 각각의 비율이 들어있습니다. 결과 값은 비율이 가장 높은 값이므로 해당 값을 tf.math.argmax함수를 이용하여 찾아서 idx에 저장하세요