AI/모두의 딥러닝

[딥러닝:DeepLearning] 러닝 모델 저장하기

LiDARian 2021. 10. 6. 13:00
반응형

 

학습이 완료된 딥러닝 모델을 저장하려면 `model.save()`함수를 사용하면 된다. `model.save()`는 keras.models.load_model에 있다.

del 키워드는 파이썬 내장 함수로 대상 객체의 데이터를 삭제한다. 예를 들면

a = [1,2,3]
del a[1]
print(a)


output은 [1, 3]이다.

조금 더 자세한 설명은 이곳을 참고하자.
https://hashcode.co.kr/questions/7566/%ED%8C%8C%EC%9D%B4%EC%8D%AC-del-%EC%9D%B4-%ED%95%A8%EC%88%98%EC%9D%B8%EA%B0%80%EC%9A%94


 

 


예시 코드는 저번 예제에서 사용한 코드에서 보도록 하겠다.

 

# 데이터 입력
from google.colab import files
uploaded = files.upload()
my_data = 'sonar.csv'

!pip install -q tensorflow-gpu==1.15.0
%tensorflow_version 1.x
import tensorflow as tf
import pandas as pd
import numpy

from keras.models import Sequential, load_model
from keras.layers.core import Dense
from sklearn.preprocessing import LabelEncoder

# seed 값 설정
seed = 0
numpy.random.seed(seed)
tf.compat.v1.set_random_seed(3)

#데이터 적용
df = pd.read_csv(my_data, header=None)
'''
print(df.info())
print(df.head())
'''
dataset = df.values
X = dataset[:,0:60]
Y_obj = dataset[:,60]

e = LabelEncoder()
e.fit(Y_obj)
Y = e.transform(Y_obj)
# 학습셋과 테스트셋을 나눔
from sklearn.model_selection import train_test_split

X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.3, random_state=seed)

model = Sequential()
model.add(Dense(24,  input_dim=60, activation='relu'))
model.add(Dense(10, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

여기까지는 지금까지와 똑같은 모델 설정 및 컴파일 과정이다.

 

아래부터가 모델 러닝 수행 후 그 결과를 저장하고, 기존 모델을 지운 후, 다시 모델을 가져와서 테스트를 수행하는 과정이다.

 

model.compile(loss='mean_squared_error',
            optimizer='adam',
            metrics=['accuracy'])

model.fit(X_train, Y_train, epochs=130, batch_size=5)
model.save('my_model.h5')  # 모델을 컴퓨터에 저장

del model       # 테스트를 위해 메모리 내의 모델을 삭제
model = load_model('my_model.h5') # 모델을 새로 불러옴

print("\n Test Accuracy: %.4f" % (model.evaluate(X_test, Y_test)[1]))  # 불러온 모델로 테스트 실행

 

반응형