<jupyter_start><jupyter_text>케라스 작업 절차 1. 데이터셋 생성하기  - 원본 데이터를 불러오거나 시뮬레이션을 통해 데이터를 생성  - Training Set, Validation Set, Test Set 생성  - 데이터 포멧 변환 (학습 및 평가 목적)1. 모델 구성  - 시퀀스 모델을 생성한 뒤 필요한 레이어 추가  - 복잡한 모델 생성시 케라스 API 사용1. 모델 학습 과정 설정  - 학습에 대한 설정 수정  - 손실 함수 및 최적화 방법 정의  - compile() 함수 사용1. 모델 학습  - training set으로 학습  - fit() 함수 사용1. 학습 과정 살펴보기  - 모델 학습 시 Training set과 validation set으로 손실 및 정확도 측정  - epoch에 따른 손실 및 정확도 추이 파악1. 모델 평가  - test set으로 학습 모델 평가  - evaluate() 함수 사용1. 모델 사용  - predict() 함수 이용하여 결과 출력  예제 - 패키지 임포트<jupyter_code>from keras.utils import np_utils
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Activation<jupyter_output><empty_output><jupyter_text>- 데이터 생성<jupyter_code>(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(60000, 28*28).astype("float")/255.0
x_test = x_test.reshape(10000, 28*28).astype("float")/255.0
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)<jupyter_output><empty_output><jupyter_text>- 메델 구성하기<jupyter_code>model = Sequential()
model.add(Dense(units=64, input_dim=28*28, activation='relu'))
model.add(Dense(units=10, activation='softmax'))<jupyter_output><empty_output><jupyter_text>- 모델 학습 설정<jupyter_code>model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])<jupyter_output><empty_output><jupyter_text>- 모델 학습 시키기<jupyter_code>hist = model.fit(x_train, y_train, epochs=5, batch_size=32)<jupyter_output>Epoch 1/5
60000/60000 [==============================] - 3s 48us/step - loss: 0.6695 - acc: 0.8303
Epoch 2/5
60000/60000 [==============================] - 3s 48us/step - loss: 0.3499 - acc: 0.9013
Epoch 3/5
60000/60000 [==============================] - 3s 48us/step - loss: 0.3019 - acc: 0.9136
Epoch 4/5
60000/60000 [==============================] - 3s 48us/step - loss: 0.2734 - acc: 0.9221
Epoch 5/5
60000/60000 [==============================] - 3s 48us/step - loss: 0.2521 - acc: 0.9283<jupyter_text>- 학습 과정 살펴보기<jupyter_code>print('## traing loss and acc ##')
hist.history['loss']
hist.history['acc']<jupyter_output><empty_output><jupyter_text>- 모델 평가하기<jupyter_code>loss_and_matrics = model.evaluate(x_test, y_test, batch_size=32)
print(loss_and_matrics)<jupyter_output>10000/10000 [==============================] - 0s 26us/step
[0.23298718755692244, 0.93420000000000003]<jupyter_text>- 모델 사용하기<jupyter_code>xhat = x_test[0:3]
yhat = model.predict(xhat)
yhat
import numpy as np
np.argmax(yhat, axis=1)
np.argmax(y_test[0:len(yhat)], axis=1)<jupyter_output><empty_output><jupyter_text>- 모델 출력<jupyter_code>from IPython.display import SVG
from keras.utils.vis_utils import model_to_dot
%matplotlib inline
SVG(model_to_dot(model, show_shapes=True).create(prog='dot', format='svg'))<jupyter_output><empty_output><jupyter_text>- 모델 저장<jupyter_code>from keras.models import load_model
model.save('mnist_mlp_model.h5')
!ls 
model2 = load_model('./mnist_mlp_model.h5')
xhat = x_test[0:3]
yhat = model2.predict(xhat)
np.argmax(yhat, axis=1)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.18565400843881857, 'fraction_numerical': 0.07530022719896137, 'mean_word_length': 5.864142538975501, 'pattern_counts': {'":': 0, '<': 39, '<?xml version=': 0, '>': 39, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 1, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '99458', 'license': 'Apache-2.0', 'n_tokens_mistral': 1683, 'n_tokens_neox': 1687, 'n_words': 266, 'path': 'PythonDeepLearningKeras/Part1-ch01.ipynb', 'repo_name': 'taewanme/ml_learning_space', 'size': '3081'}