본문 바로가기
IT 프로그래밍 관련/딥러닝

tensorflow 모델 및 가중치(weight) 저장하고 불러오기

by 지나는행인 2021. 3. 10.
728x90

여러번의 시도를 통하여 좋은 정확도를 가진 머신을 개발하였다면 그 모델을 저장하여,

 

같은 성능으로 다른곳에서도 사용할 수 있다.

 

모델의 저장법과 그 모델을 다시 불러오는 방법이다.

 

 

1. 전체 모델과 weight를 통으로 h5파일로 저장 하고 불러오는 방법.

1
2
3
4
5
6
7
8
9
#pip install h5py
 
import h5py
 
model.save('파일명.h5')    ##  저장방법
 
new_model = tensorflow.keras.models.load_model('파일명.h5')
 
 
cs

 

2. 전체 모델과 웨이를 폴더구조로 통째로 편하게 처리(따로 컴파일 필요없다.)

 

1
2
3
4
5
6
7
8
9
 
 
#폴더로 생성된다. 원하는 폴더명 입력, 폴더안에 파일들과 같이 생성됨.
 
 
model.save('폴더명')    ##  저장방법
 
new_model = tensorflow.keras.models.load_model('폴더명')
 
cs

 

3. 네트워크의 구조(모델) 만 저장하고 불러오기

1
2
3
4
5
6
7
8
9
10
11
12
13
from keras.models import model_from_json
 
#저장할때
model_json = model.to_json()     # 제이슨으로 저장하기 위해 제이슨으로 바꿈
with open('fashion_model.json','w'as json_file :
  json_file.write(model_json)
 
 
#불러올때
 
with open('fashion_model.json','r'as json_file :
  model_json = json_file.read()
model = model_from_json(model_json)    
cs

 

 

4.네트워크의 weight(가중치)를 저장하고 불러오기 : 이때는 컴파일을 꼭 해줘야 사용가능

1
2
3
4
5
6
7
8
9
10
11
12
 
 
#저장할때
model.save_weights('파일명.h5')
 
 
 
#불러올때
 
model.load_weights('파일명.h5)    ##  경로 다 써야함.
 
#모델과 웨이트 따로 가져왔을때 compile 꼭 해줘야함.
cs

 

5.스케일러 등을 저장하고 불러오기

(joblib  이용)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
import joblib
import pickle
 
 
#스케일러
 
#저장하기
joblib.dump( sc_x , '저장할파일명.pkl' )   ## sc_x = MinMaxScaler()  로 작업되어있다.sc_x 를 써서 모델이 작업되었다.
 
 
 
#불러오기  
 = joblib.load( '저장된파일명.pkl')
cs

 

댓글