파이썬 딥러닝 - 03. 케라스 기본 모델 구동

2020. 1. 5. 01:15카테고리 없음

자꾸 import keras를 했더니 "AttributeError: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'" 라는 에러만 나서 봤더니 import keras 를 모두 import tensorflow.keras로 수정했더니 고쳐졌다. 원인은 찾다가 실패..

딥러닝 기본 모델 구동 확인

아래 코드는 기본적인 딥러닝 모델에 손글씨 데이터셋을 학습시킨 뒤 평가하는 기본 예제. ( 출력은 주석처리 )

from tensorflow.keras.datasets import mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Activation

(X_train,Y_train),(X_test,Y_test) = mnist.load_data()
X_train = X_train.reshape(60000,784).astype('float32') / 255.0
X_test = X_test.reshape(10000,784).astype('float32')/255.0
Y_train = keras.utils.to_categorical(Y_train)
Y_test = keras.utils.to_categorical(Y_test)

model = Sequential()
model.add(Dense(units=64,input_dim=28*28,activation='relu'))
model.add(Dense(units=10,activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
model.fit(X_train,Y_train,epochs=5,batch_size=32)

#Epoch 1/5
#60000/60000 [==============================] - 4s 62us/step - loss: 0.6662 - acc: 0.8287
#Epoch 2/5
#60000/60000 [==============================] - 3s 56us/step - loss: 0.3476 - acc: 0.9025
#Epoch 3/5
#60000/60000 [==============================] - 3s 58us/step - loss: 0.3007 - acc: 0.9145
#Epoch 4/5
#60000/60000 [==============================] - 3s 56us/step - loss: 0.2720 - acc: 0.9231
#Epoch 5/5
#60000/60000 [==============================] - 4s 59us/step - loss: 0.2499 - acc: 0.9293

loss_and_metrics = model.evaluate(X_test,Y_test,batch_size=32)
print('loss_and_metrics : '+str(loss_and_metrics))

#10000/10000 [==============================] - 0s 26us/step
#loss_and_metrics : [0.2345446947529912, 0.9344]

딥러닝 모델 가시화 기능 확인

모델을 가시화 하려면 graphviz를 설치해야하는데

에러가 나면 https://graphviz.gitlab.io/_pages/Download/Download_windows.html 에서 graphviz-2.38.msi를 다운받아 설치하고 제어판 > 시스템 및 보안 > 시스템 > 고급 시스템 설정 > 환경변수 에서 아래와 같이 시스템 변수 추가 / Path에 "C:\Program Files (x86)\Graphviz2.38\bin" 경로 추가, 그 이후 jupyter notebook이 실행되고 있는 cmd를 재시작하면 된다.

from IPython.display import SVG
from tensorflow.python.keras.utils.vis_utils import model_to_dot

%matplotlib inline
SVG(model_to_dot(model,show_shapes=True).create(prog='dot',format='svg'))

추가로 tensorflow.keras.utils.vis_utils도 tensorflow.python.keras.utils.vis_utils로 해줘야 에러가 안난다.

 

딥러닝 모델 저장 기능 확인

딥러닝 모델의 구성과 가중치를 저장 및 로드하기 위한 코드이다.

from tensorflow.keras.models import load_model
model.save('mnist_mlp_model.h5')
model = load_model('mnist_mlp_model.h5')

위 코드를 실행하면 로컬 디렉토리에 'mnist_mlp_model.h5' 파일이 생성된 걸 볼 수 있다.