Tensorflow - 인공신경망 모델 파일로 저장하기 (전체/네트워크만/가중치만)

사전 확인

  • 학습된 인공신경망 모델 변수 이름 : model

인공신경망 모델 ( 전체(Network+Weight) )

모델 전체 저장하기 

  • 모델이름.save('파일이름')
    • 현재 실행된 파일의 디렉토리에 인공신경망 폴더 생성
# model은 사전에 학습된 인공신경망 변수 이름
model.save('fashion_mnist_model')

 

폴더가 아닌 하나의 파일로 저장하기

  • 모델이름.save('파일이름.h5')
    • 현재 실행된 파일의 디렉토리에 .h5 파일 생성
model.save('fashion_mnist_model.h5')

 

불러오기

  • 변수 = tf.keras.models.load_model('파일이름')
model2 = tf.keras.models.load_model('fashion_mnist_model')
model2.evaluate(X_test, y_test)
>>> 313/313 [==============================] - 1s 2ms/step - loss: 0.3408 - accuracy: 0.8841
[0.3407546281814575, 0.8841000199317932]

인공신경망의 네트워크(모델의 기본 틀)

사전 정의

  • 변수 = 모델이름.to_json()
# 네트워크 json 파일 정의
my_network = model.to_json()

 

네트워크만 저장하기

  • open('파일이름', 'w') : 해당 파일 이름으로 저장 선언
  • 파일.write(네트워크json변수) : 저장한 네트워크를 파일로 저장
    • 현재 실행된 파일의 디렉토리에 파일 생성
with open('my_network.json', 'w') as json_file :
  json_file.write(my_network)

 

불러오기

  • open('파일이름', 'r') : 해당 파일 호출
  • 변수 = 파일.read() : 호출한 파일의 네트워크 정보를 변수에 저장
  • 변수 = tf.keras.models.model_from_json(네트워크 정보를 지닌 변수)
with open('my_network.json', 'r') as json_file :
  my_net1 = json_file.read()
  
my_net1
>>> {"class_name": "Sequential", "config": {"name": ...

model_network = tf.keras.models.model_from_json(my_net1)
model_network.evaluate(X_test, y_test)
>>> Error

 

주의사항

  • 네트워크(기본 틀)만 저장 된 모델
  • 성능 평가(evaluate) 사용시 에러 출력
  • 가중치가 존재하지 않기 때문에 학습 데이터가 없어 예측이 불가
    • 예측은 되나 값이 무작위로 출력되어 신뢰성이 낮음

인공신경망의 가중치 (weight)

가중치만 저장하기

  • 모델이름.save_weights('파일이름')
    • 현재 실행된 파일의 디렉토리에 파일 생성
model.save_weights('fashion_mnist_weight.h5')

 

불러오기

  • 모델이름.load_weights('파일이름')
  • 네트워크만 저장된 모델을 불러오면 가중치가 생김. 즉, 예측 가능
model_network.load_weights('fashion_mnist_weight.h5')