SlideShare a Scribd company logo
1 of 8
Download to read offline
PYTHON MACHINE LEARNING
5-7 KERAS를 이용한 다양한 딥러닝
Kim YoungJun, PartPrime
Keras
: Theano와 TensorFlow를 래핑한 라이브러리
Keras 설치
PyPI를 이용해 설치
$ pip3 install keras
Keras설정 편집
{
"image_dim_ordering": "tf",
"floatx": "float32",
"epsilon": 1e-07,
"backend": "tensorflow"
}
$ nano ~/.keras/keras.json (nano editor를 이용)
Keras를 이용한 mnist테스트
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import Adam
from keras.utils import np_utils
# MNIST 데이터 읽어 들이기
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 데이터를 float32자료형으로 변환하고 정규화
X_train = X_train.reshape(60000, 784).astype("float32")
X_test = X_test.reshape(10000, 784).astype("float32")
X_train /= 255
X_test /= 255
# 레이블 데이터를 0~9까지의 카테고리를 나타내는 배열로 변환
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
# 모델 구조 정의
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(512))
model.add(Activation("relu"))
model.add(Dropout(0.2))
model.add(Dense(10))
model.add(Activation("softmax"))
# 모델 구축
model.compile(
loss='categorical_crossentropy',
optimizer=Adam(),
metrics=["accuracy"]
)
# 데이터 훈련
hist = model.fit(X_train, y_train)
# 테스트 데이터로 평가
score = model.evaluate(X_test, y_test, verbose=1)
print("loss=", score[0])
print("accuracy=", score[1])
데이터를 [60000][784]배열과 float32타입으로 변환
Adam optimizer
keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
ex) 5 > [ 0 0 0 0 0 1 0 0 0 0 ]
0 > [ 1 0 0 0 0 0 0 0 0 0 ]
Dense : 입출력 형태설정. 이전 레이어의 출력형태가 다음 레이어의 입력형
태가 되므로 첫 레이어만 입력형태를 설정해주면 된다.
Activation : 레이어의 활성화 함수
ReLU : Rectified Linear Unit
max(features, 0)
순차적으로 레이어를 정의해 나간다.
Dropout : 오버피팅을 막기 위한 무작위 탈락값
값을 0~1사이로 정규화
Epoch 1/10
60000/60000 [==============================] - 28s - loss: 0.2131 - acc: 0.9344
Epoch 2/10
60000/60000 [==============================] - 28s - loss: 0.1036 - acc: 0.9685
Epoch 3/10
60000/60000 [==============================] - 28s - loss: 0.0805 - acc: 0.9747
Epoch 4/10
60000/60000 [==============================] - 28s - loss: 0.0673 - acc: 0.9792
Epoch 5/10
60000/60000 [==============================] - 28s - loss: 0.0583 - acc: 0.9816
Epoch 6/10
60000/60000 [==============================] - 28s - loss: 0.0520 - acc: 0.9838
Epoch 7/10
60000/60000 [==============================] - 28s - loss: 0.0448 - acc: 0.9853
Epoch 8/10
60000/60000 [==============================] - 28s - loss: 0.0452 - acc: 0.9865
Epoch 9/10
60000/60000 [==============================] - 31s - loss: 0.0406 - acc: 0.9884
Epoch 10/10
60000/60000 [==============================] - 26s - loss: 0.0373 - acc: 0.9884
10000/10000 [==============================] - 0s
loss= 0.0930540135325
accuracy= 0.979
Result
Keras를 이용한 mnist테스트
Keras를 이용한 비만도 판정
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.callbacks import EarlyStopping
import pandas as pd, numpy as np
# BMI 데이터를 읽어 들이고 정규화 하기
csv = pd.read_csv("bmi.csv")
# 몸무게와 키 데이터
csv["weight"] /= 100
csv["height"] /= 200
X = csv[["weight", "height"]].as_matrix()
# 레이블
bclass = {"thin":[1,0,0], "normal":[0,1,0], "fat":[0,0,1]}
y = np.empty((20000, 3))
for i, v in enumerate(csv["label"]):
y[i] = bclass[v]
# 훈련 전용 데이터와 테스트 전용 데이터로 나누기
X_train, y_train = X[1:15001], y[1:15001]
X_test, y_test = X[15001:20001], y[15001:20001]
# 모델 구조 정의하기
model = Sequential()
model.add(Dense(512, input_shape=(2,)))
model.add(Activation("relu"))
model.add(Dropout(0.1))
model.add(Dense(512))
model.add(Activation("relu"))
model.add(Dropout(0.1))
model.add(Dense(3))
model.add(Activation("softmax"))
# 모델 구축하기
model.compile(
loss="categorical_crossentropy",
optimizer="rmsprop",
metrics=["accuracy"]
)
# 데이터 훈련하기
hist = model.fit(
X_train, y_train,
batch_size=100,
nb_epoch=20,
validation_split=0.1,
callbacks=[EarlyStopping(monitor="val_loss", patience=2)],
verbose=1
)
# 테스트 데이터로 평가하기
score = model.evaluate(X_test, y_test)
print("loss=", score[0])
print("accuracy=", score[1])
RMSprop optimizer
keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)
키와 몸무게를 0~1사이의 값으로 정규화
문자를 숫자로 변환
Train on 13500 samples, validate on 1500 samples
Epoch 1/20
13500/13500 [==============================] - 1s - loss: 0.4929
- acc: 0.8008 - val_loss: 0.2668 - val_acc: 0.9127
Epoch 2/20
13500/13500 [==============================] - 1s - loss: 0.2443
- acc: 0.9035 - val_loss: 0.1696 - val_acc: 0.9480
Epoch 3/20
…
Epoch 14/20
13500/13500 [==============================] - 1s - loss: 0.1140
- acc: 0.9511 - val_loss: 0.1051 - val_acc: 0.9460
Result
Keras를 이용한 비만도 판정
THANK YOU
sanganj@partprime.com파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문 (위키북스)의 내용을 기반으로 정리 함.

More Related Content

More from PartPrime

what is deep learning?
what is deep learning? what is deep learning?
what is deep learning? PartPrime
 
Deep Learning with Python 2-1
Deep Learning with Python 2-1Deep Learning with Python 2-1
Deep Learning with Python 2-1PartPrime
 
Python machine learning_chap05_8
Python machine learning_chap05_8Python machine learning_chap05_8
Python machine learning_chap05_8PartPrime
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep LearningPartPrime
 
Python machine learning_chap04_2
Python machine learning_chap04_2 Python machine learning_chap04_2
Python machine learning_chap04_2 PartPrime
 
Python machine learning_chap02
Python machine learning_chap02Python machine learning_chap02
Python machine learning_chap02PartPrime
 
Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공PartPrime
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4PartPrime
 

More from PartPrime (8)

what is deep learning?
what is deep learning? what is deep learning?
what is deep learning?
 
Deep Learning with Python 2-1
Deep Learning with Python 2-1Deep Learning with Python 2-1
Deep Learning with Python 2-1
 
Python machine learning_chap05_8
Python machine learning_chap05_8Python machine learning_chap05_8
Python machine learning_chap05_8
 
Ch.5 Deep Learning
Ch.5 Deep LearningCh.5 Deep Learning
Ch.5 Deep Learning
 
Python machine learning_chap04_2
Python machine learning_chap04_2 Python machine learning_chap04_2
Python machine learning_chap04_2
 
Python machine learning_chap02
Python machine learning_chap02Python machine learning_chap02
Python machine learning_chap02
 
Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공Ch.3 데이터 소스의 서식과 가공
Ch.3 데이터 소스의 서식과 가공
 
Python machine learning Ch.4
Python machine learning Ch.4Python machine learning Ch.4
Python machine learning Ch.4
 

Recently uploaded

도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'Hyundai Motor Group
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)Wonjun Hwang
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Wonjun Hwang
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdfssuserf8b8bd1
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료Softwide Security
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료Softwide Security
 

Recently uploaded (6)

도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
도심 하늘에서 시속 200km로 비행할 수 있는 미래 항공 모빌리티 'S-A2'
 
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
파일 업로드(Kitworks Team Study 유현주 발표자료 240510)
 
Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)Grid Layout (Kitworks Team Study 장현정 발표자료)
Grid Layout (Kitworks Team Study 장현정 발표자료)
 
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
[OpenLAB] AWS reInvent를 통해 바라본 글로벌 Cloud 기술동향.pdf
 
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
클라우드 애플리케이션 보안 플랫폼 'Checkmarx One' 소개자료
 
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
오픈소스 위험 관리 및 공급망 보안 솔루션 'Checkmarx SCA' 소개자료
 

Python machine learning_chap05_7

  • 1. PYTHON MACHINE LEARNING 5-7 KERAS를 이용한 다양한 딥러닝 Kim YoungJun, PartPrime
  • 2. Keras : Theano와 TensorFlow를 래핑한 라이브러리
  • 3. Keras 설치 PyPI를 이용해 설치 $ pip3 install keras Keras설정 편집 { "image_dim_ordering": "tf", "floatx": "float32", "epsilon": 1e-07, "backend": "tensorflow" } $ nano ~/.keras/keras.json (nano editor를 이용)
  • 4. Keras를 이용한 mnist테스트 from keras.datasets import mnist from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.optimizers import Adam from keras.utils import np_utils # MNIST 데이터 읽어 들이기 (X_train, y_train), (X_test, y_test) = mnist.load_data() # 데이터를 float32자료형으로 변환하고 정규화 X_train = X_train.reshape(60000, 784).astype("float32") X_test = X_test.reshape(10000, 784).astype("float32") X_train /= 255 X_test /= 255 # 레이블 데이터를 0~9까지의 카테고리를 나타내는 배열로 변환 y_train = np_utils.to_categorical(y_train, 10) y_test = np_utils.to_categorical(y_test, 10) # 모델 구조 정의 model = Sequential() model.add(Dense(512, input_shape=(784,))) model.add(Activation("relu")) model.add(Dropout(0.2)) model.add(Dense(512)) model.add(Activation("relu")) model.add(Dropout(0.2)) model.add(Dense(10)) model.add(Activation("softmax")) # 모델 구축 model.compile( loss='categorical_crossentropy', optimizer=Adam(), metrics=["accuracy"] ) # 데이터 훈련 hist = model.fit(X_train, y_train) # 테스트 데이터로 평가 score = model.evaluate(X_test, y_test, verbose=1) print("loss=", score[0]) print("accuracy=", score[1]) 데이터를 [60000][784]배열과 float32타입으로 변환 Adam optimizer keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0) ex) 5 > [ 0 0 0 0 0 1 0 0 0 0 ] 0 > [ 1 0 0 0 0 0 0 0 0 0 ] Dense : 입출력 형태설정. 이전 레이어의 출력형태가 다음 레이어의 입력형 태가 되므로 첫 레이어만 입력형태를 설정해주면 된다. Activation : 레이어의 활성화 함수 ReLU : Rectified Linear Unit max(features, 0) 순차적으로 레이어를 정의해 나간다. Dropout : 오버피팅을 막기 위한 무작위 탈락값 값을 0~1사이로 정규화
  • 5. Epoch 1/10 60000/60000 [==============================] - 28s - loss: 0.2131 - acc: 0.9344 Epoch 2/10 60000/60000 [==============================] - 28s - loss: 0.1036 - acc: 0.9685 Epoch 3/10 60000/60000 [==============================] - 28s - loss: 0.0805 - acc: 0.9747 Epoch 4/10 60000/60000 [==============================] - 28s - loss: 0.0673 - acc: 0.9792 Epoch 5/10 60000/60000 [==============================] - 28s - loss: 0.0583 - acc: 0.9816 Epoch 6/10 60000/60000 [==============================] - 28s - loss: 0.0520 - acc: 0.9838 Epoch 7/10 60000/60000 [==============================] - 28s - loss: 0.0448 - acc: 0.9853 Epoch 8/10 60000/60000 [==============================] - 28s - loss: 0.0452 - acc: 0.9865 Epoch 9/10 60000/60000 [==============================] - 31s - loss: 0.0406 - acc: 0.9884 Epoch 10/10 60000/60000 [==============================] - 26s - loss: 0.0373 - acc: 0.9884 10000/10000 [==============================] - 0s loss= 0.0930540135325 accuracy= 0.979 Result Keras를 이용한 mnist테스트
  • 6. Keras를 이용한 비만도 판정 from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.callbacks import EarlyStopping import pandas as pd, numpy as np # BMI 데이터를 읽어 들이고 정규화 하기 csv = pd.read_csv("bmi.csv") # 몸무게와 키 데이터 csv["weight"] /= 100 csv["height"] /= 200 X = csv[["weight", "height"]].as_matrix() # 레이블 bclass = {"thin":[1,0,0], "normal":[0,1,0], "fat":[0,0,1]} y = np.empty((20000, 3)) for i, v in enumerate(csv["label"]): y[i] = bclass[v] # 훈련 전용 데이터와 테스트 전용 데이터로 나누기 X_train, y_train = X[1:15001], y[1:15001] X_test, y_test = X[15001:20001], y[15001:20001] # 모델 구조 정의하기 model = Sequential() model.add(Dense(512, input_shape=(2,))) model.add(Activation("relu")) model.add(Dropout(0.1)) model.add(Dense(512)) model.add(Activation("relu")) model.add(Dropout(0.1)) model.add(Dense(3)) model.add(Activation("softmax")) # 모델 구축하기 model.compile( loss="categorical_crossentropy", optimizer="rmsprop", metrics=["accuracy"] ) # 데이터 훈련하기 hist = model.fit( X_train, y_train, batch_size=100, nb_epoch=20, validation_split=0.1, callbacks=[EarlyStopping(monitor="val_loss", patience=2)], verbose=1 ) # 테스트 데이터로 평가하기 score = model.evaluate(X_test, y_test) print("loss=", score[0]) print("accuracy=", score[1]) RMSprop optimizer keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0) 키와 몸무게를 0~1사이의 값으로 정규화 문자를 숫자로 변환
  • 7. Train on 13500 samples, validate on 1500 samples Epoch 1/20 13500/13500 [==============================] - 1s - loss: 0.4929 - acc: 0.8008 - val_loss: 0.2668 - val_acc: 0.9127 Epoch 2/20 13500/13500 [==============================] - 1s - loss: 0.2443 - acc: 0.9035 - val_loss: 0.1696 - val_acc: 0.9480 Epoch 3/20 … Epoch 14/20 13500/13500 [==============================] - 1s - loss: 0.1140 - acc: 0.9511 - val_loss: 0.1051 - val_acc: 0.9460 Result Keras를 이용한 비만도 판정
  • 8. THANK YOU sanganj@partprime.com파이썬을 이용한 머신러닝, 딥러닝 실전개발 입문 (위키북스)의 내용을 기반으로 정리 함.