SlideShare a Scribd company logo
1 of 17
Download to read offline
Keras 빨리 훑어보기
신림프로그래머, 최범균, 2017-03-06
Keras
• 딥러닝 라이브러리
• Tensorflow와 Theano를 backend로 사용
• 특장점
• 쉽고 빠른 구현 (레이어, 활성화 함수, 비용 함수, 최적화 등 모듈화)
• CNN, RNN 지원
• CPU/GPU 지원
• 확장성 (새 모듈을 매우 간단하게 추가 가능)
• 파이선 코드로 모델 생성
설치
• 쉽게 anaconda 이용 설치
conda create -n keras python=3.5
source activate keras
pip install tensorflow
conda install scipy
pip install keras
pip install h5py
밑바닥딥러닝 4장 Keras 구현 예
(X_train, Y_train), (X_test, Y_test) = load_mnist(normalize=True, one_hot_label=True)
model = Sequential()
model.add(Dense(100, input_shape=(784,)))
model.add(Activation("sigmoid"))
model.add(Dense(10))
model.add(Activation("softmax"))
sgd = SGD(lr=0.1)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
batch_size = 100
nb_epoch = 16 # X_train: (60000, 784), 1 epoch = 100 * 600
model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch,
verbose=0, validation_data=(X_test, Y_test))
# 모델 저장
model.save('mlp.h5')
학습 프로세스 설정
학습 데이터로 학습
레이어 구성
밑바닥딥러닝 4장 Keras로 구현한 예
# 모델을 사용해서 예측
from keras.models import load_model
model = load_model('mlp.h5')
pc = model.predict_classes(X_test[0:100, :], 100)
print(pc) # [7 2 1 0 4 1 4 9 6 9 0 6 9 0 …생략 ]
pb = model.predict_proba(X_test[0:100, :], 100)
print(pb) # [ [1.44900128e-04 2.80301083e-06 2.45836651e-04 …생략 ], 생략 …,[ … ] ]
밑바닥딥러닝 7장 CNN keras로 구현한 예
model = Sequential()
nb_filter = 30
kernal_size = (5, 5)
input_shape = (img_rows, img_cols, 1)
model.add(Convolution2D(nb_filter, kernal_size[0], kernal_size[1], border_mode='valid', input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(100))
model.add(Activation("relu"))
model.add(Dense(10))
model.add(Activation("softmax"))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, Y_train, batch_size=100, nb_epoch=10, verbose=1, validation_data=(X_test, Y_test))
Sequential 모델로 쉽게 레이어 구성
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
model = Sequential()
model.add(Dense(512, input_shape=(784,))) # 입력 784, 출력 512
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(512)) # 입력 512(이전 레이어 입력), 출력 512
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(10)) # 입력 512(이전 레이어 입력), 출력 10
model.add(Activation('softmax'))
다양한 레이어 제공
• Dense : 완전 연결 NN 레이어
• Activation : 활성화 레이어
• Dropout : 드롭아웃 레이어
• BatchNormalization : 배치 정규화
• Convolution2D : 콘볼루션 레이어
• MaxPooling2D : Max 풀링 레이어
• LSTM, SimpleRNN, GRU : RNN 레이어
• 등등
Dense 기초
• Dense의 입출력 관련
• output_dim: 출력 개수
• input_dim: 입력 개수
• input_shape: 입력 형상
model = Sequential()
# 입력 16, 출력 32
model.add(Dense(32, input_shape=(16,)))
# 첫 번째 레이어 이후로는 입력 개수 지정 필요 없음
# 앞 레이어의 출력 개수가 입력 개수가 됨
# 입력 32, 출력 64
model.add(Dense(64))
Dense 기초
• Dense의 가중치 초기화, 가중치 정규화(감소)
• init: 초기화 함수 이름 (weights가 없을 때 적용)
• weights: 가중치 초기값
• W_regularizer: 가중치 정규화
• b_regularizer: bias 정규화
• bias: bias를 포함할지 여부
from keras.regularizers import l2
model.add(Dense(64, input_dim=64, init='he_normal', W_regularizer=l2(0.01)))
활성화 함수
• softmax
• relu
• tanh
• sigmoid
• hard_sigmoid
• 등등
model.add(Activation('relu'))
model.add(Activation('softmax'))
학습 프로세스 정의
옵티마이저
• SGD
• RMSprop
• Adagrad
• Adam
• 이 외 Adadelta, Adamax,
Nadam
loss 함수
• mean_squared_error
• binary_crossentropy
• categorical_crossentropy
• sparse_categorical_crossentro
py
• 등등
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
학습: model.fit()
• x: 입력 데이터
• y: 라벨
• batch_size : 배치 크기
• nb_epoch: 학습 epoch 횟수
• verbose: 로깅
• 0:없음, 1:프로그레스바, 2, epoch 당
• validation_split: 0~1사이 실수
• 검증 용도로 사용할 홀드아웃 데이터 비율
• validation_data: (x, y) 검증 데이터
• validation_split은 무시
• shuffle: 각 epoch마다 샘플을 섞을지 여부
his = model.fit(X_train, Y_train,
batch_size=batch_size,
nb_epoch=nb_epoch,
verbose=2,
validation_data=(X_test, Y_test))
평가: model.evaluate()
• 파라미터
• x, y: 테스트 데이터, 라벨
• batch_size=32: 배치 크기
• verbose=1: 출력모드(0, 1)
• sample_weight: 샘플 가중치
• 리턴
• 테스트 loss 값(모델이 메트릭이 없으면)
또는 스칼라 값 목록(모델이 다른 메트릭을 계산하면)
score = model.evaluate(X_test, Y_test, verbose=0)
print(model.metrics_names) # loss, acc
print('Test score:', score[0]) # loss
print('Test accuracy:', score[1]) # acc
Callback
• 학습 과정 데이터 관찰 용도
• 다양한 콜백 제공
• ModelCheckPoint
• EarlyStopping
• RemoteMonitor
• TensorBoard
• 등등
• 커스텀 구현 지원
tensorcallback = TensorBoard(log_dir='./logs',
histogram_freq=0,
write_graph=True,
write_images=False)
his = model.fit(X_train, Y_train,
…,
callbacks=[tensorcallback])
텐서보드 예
모델 정보
• model.summary()
____________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
====================================================================================================
dense_1 (Dense) (None, 100) 78500 dense_input_1[0][0]
____________________________________________________________________________________________________
activation_1 (Activation) (None, 100) 0 dense_1[0][0]
____________________________________________________________________________________________________
dense_2 (Dense) (None, 10) 1010 activation_1[0][0]
____________________________________________________________________________________________________
activation_2 (Activation) (None, 10) 0 dense_2[0][0]
====================================================================================================
Total params: 79,510
Trainable params: 79,510
Non-trainable params: 0
참고
• keras.io
• 밑바닥부터 시작하는 딥러닝

More Related Content

What's hot

Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)Tae Young Lee
 
Learning by association
Learning by associationLearning by association
Learning by association홍배 김
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기Kwangsik Lee
 
Cnn 발표자료
Cnn 발표자료Cnn 발표자료
Cnn 발표자료종현 최
 
A Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderA Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderLee Seungeun
 
알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder홍배 김
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거도형 임
 
Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...
Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...
Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...Mad Scientists
 
One-Shot Learning
One-Shot LearningOne-Shot Learning
One-Shot LearningJisung Kim
 
Deview deep learning-김정희
Deview deep learning-김정희Deview deep learning-김정희
Deview deep learning-김정희NAVER D2
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorialLee Seungeun
 
Rnn개념정리
Rnn개념정리Rnn개념정리
Rnn개념정리종현 최
 
Chapter 6 Deep feedforward networks - 2
Chapter 6 Deep feedforward networks - 2Chapter 6 Deep feedforward networks - 2
Chapter 6 Deep feedforward networks - 2KyeongUkJang
 
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...홍배 김
 
A neural image caption generator
A neural image caption generatorA neural image caption generator
A neural image caption generator홍배 김
 
기계학습을 이용한 숫자인식기 제작
기계학습을 이용한 숫자인식기 제작기계학습을 이용한 숫자인식기 제작
기계학습을 이용한 숫자인식기 제작Do Hoerin
 
Anomaly Detection with GANs
Anomaly Detection with GANsAnomaly Detection with GANs
Anomaly Detection with GANs홍배 김
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리SANG WON PARK
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개Terry Cho
 
3.unsupervised learing
3.unsupervised learing3.unsupervised learing
3.unsupervised learingHaesun Park
 

What's hot (20)

Denoising auto encoders(d a)
Denoising auto encoders(d a)Denoising auto encoders(d a)
Denoising auto encoders(d a)
 
Learning by association
Learning by associationLearning by association
Learning by association
 
알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기알아두면 쓸데있는 신비한 딥러닝 이야기
알아두면 쓸데있는 신비한 딥러닝 이야기
 
Cnn 발표자료
Cnn 발표자료Cnn 발표자료
Cnn 발표자료
 
A Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding AutoencoderA Beginner's guide to understanding Autoencoder
A Beginner's guide to understanding Autoencoder
 
알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder알기쉬운 Variational autoencoder
알기쉬운 Variational autoencoder
 
Ai 그까이거
Ai 그까이거Ai 그까이거
Ai 그까이거
 
Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...
Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...
Face Feature Recognition System with Deep Belief Networks, for Korean/KIISE T...
 
One-Shot Learning
One-Shot LearningOne-Shot Learning
One-Shot Learning
 
Deview deep learning-김정희
Deview deep learning-김정희Deview deep learning-김정희
Deview deep learning-김정희
 
랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial랩탑으로 tensorflow 도전하기 - tutorial
랩탑으로 tensorflow 도전하기 - tutorial
 
Rnn개념정리
Rnn개념정리Rnn개념정리
Rnn개념정리
 
Chapter 6 Deep feedforward networks - 2
Chapter 6 Deep feedforward networks - 2Chapter 6 Deep feedforward networks - 2
Chapter 6 Deep feedforward networks - 2
 
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
Knowing when to look : Adaptive Attention via A Visual Sentinel for Image Cap...
 
A neural image caption generator
A neural image caption generatorA neural image caption generator
A neural image caption generator
 
기계학습을 이용한 숫자인식기 제작
기계학습을 이용한 숫자인식기 제작기계학습을 이용한 숫자인식기 제작
기계학습을 이용한 숫자인식기 제작
 
Anomaly Detection with GANs
Anomaly Detection with GANsAnomaly Detection with GANs
Anomaly Detection with GANs
 
Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리Coursera Machine Learning (by Andrew Ng)_강의정리
Coursera Machine Learning (by Andrew Ng)_강의정리
 
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
머신 러닝 입문 #1-머신러닝 소개와 kNN 소개
 
3.unsupervised learing
3.unsupervised learing3.unsupervised learing
3.unsupervised learing
 

Viewers also liked

Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기beom kyun choi
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.Yongho Ha
 

Viewers also liked (6)

Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기간단 Ip 필터 구현 이야기
간단 Ip 필터 구현 이야기
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
자습해도 모르겠던 딥러닝, 머리속에 인스톨 시켜드립니다.
 

Similar to keras 빨리 훑어보기(intro)

2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3Haesun Park
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initializationEunjoo Im
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기Yongha Yoo
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basicsJaewon Choi
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tae Young Lee
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신Haesun Park
 
[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들종현 최
 
딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)Tae Young Lee
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작DACON AI 데이콘
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetectJunyi Song
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)상욱 송
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀EXEM
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
발표자료 11장
발표자료 11장발표자료 11장
발표자료 11장Juhui Park
 
레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기Jiyong Jung
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoTfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoMario Cho
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기찬희 이
 

Similar to keras 빨리 훑어보기(intro) (20)

2.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-32.supervised learning(epoch#2)-3
2.supervised learning(epoch#2)-3
 
Swift3 subscript inheritance initialization
Swift3 subscript inheritance initializationSwift3 subscript inheritance initialization
Swift3 subscript inheritance initialization
 
스위프트 성능 이해하기
스위프트 성능 이해하기스위프트 성능 이해하기
스위프트 성능 이해하기
 
A tour of C++ : the basics
A tour of C++ : the basicsA tour of C++ : the basics
A tour of C++ : the basics
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 
Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)Tensorflow for Deep Learning(SK Planet)
Tensorflow for Deep Learning(SK Planet)
 
Openface
OpenfaceOpenface
Openface
 
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
[홍대 머신러닝 스터디 - 핸즈온 머신러닝] 5장. 서포트 벡터 머신
 
[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들[밑러닝] Chap06 학습관련기술들
[밑러닝] Chap06 학습관련기술들
 
딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)딥러닝을 위한 Tensor flow(skt academy)
딥러닝을 위한 Tensor flow(skt academy)
 
생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작생체 광학 데이터 분석 AI 경진대회 1위 수상작
생체 광학 데이터 분석 AI 경진대회 1위 수상작
 
딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect딥러닝(Deep Learing) using DeepDetect
딥러닝(Deep Learing) using DeepDetect
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차ES6 for Node.js Study 2주차
ES6 for Node.js Study 2주차
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
발표자료 11장
발표자료 11장발표자료 11장
발표자료 11장
 
레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기레거시 시스템에 Django 들이밀기
레거시 시스템에 Django 들이밀기
 
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariochoTfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
Tfk 6618 tensor_flow로얼굴인식구현_r10_mariocho
 
PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기PySpark 배우기 Ch 06. ML 패키지 소개하기
PySpark 배우기 Ch 06. ML 패키지 소개하기
 

More from beom kyun choi

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유beom kyun choi
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰beom kyun choi
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료beom kyun choi
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개beom kyun choi
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)beom kyun choi
 
객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회beom kyun choi
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료beom kyun choi
 

More from beom kyun choi (20)

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 
객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회
 
Storm 훑어보기
Storm 훑어보기Storm 훑어보기
Storm 훑어보기
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료
 

keras 빨리 훑어보기(intro)

  • 2. Keras • 딥러닝 라이브러리 • Tensorflow와 Theano를 backend로 사용 • 특장점 • 쉽고 빠른 구현 (레이어, 활성화 함수, 비용 함수, 최적화 등 모듈화) • CNN, RNN 지원 • CPU/GPU 지원 • 확장성 (새 모듈을 매우 간단하게 추가 가능) • 파이선 코드로 모델 생성
  • 3. 설치 • 쉽게 anaconda 이용 설치 conda create -n keras python=3.5 source activate keras pip install tensorflow conda install scipy pip install keras pip install h5py
  • 4. 밑바닥딥러닝 4장 Keras 구현 예 (X_train, Y_train), (X_test, Y_test) = load_mnist(normalize=True, one_hot_label=True) model = Sequential() model.add(Dense(100, input_shape=(784,))) model.add(Activation("sigmoid")) model.add(Dense(10)) model.add(Activation("softmax")) sgd = SGD(lr=0.1) model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy']) batch_size = 100 nb_epoch = 16 # X_train: (60000, 784), 1 epoch = 100 * 600 model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=0, validation_data=(X_test, Y_test)) # 모델 저장 model.save('mlp.h5') 학습 프로세스 설정 학습 데이터로 학습 레이어 구성
  • 5. 밑바닥딥러닝 4장 Keras로 구현한 예 # 모델을 사용해서 예측 from keras.models import load_model model = load_model('mlp.h5') pc = model.predict_classes(X_test[0:100, :], 100) print(pc) # [7 2 1 0 4 1 4 9 6 9 0 6 9 0 …생략 ] pb = model.predict_proba(X_test[0:100, :], 100) print(pb) # [ [1.44900128e-04 2.80301083e-06 2.45836651e-04 …생략 ], 생략 …,[ … ] ]
  • 6. 밑바닥딥러닝 7장 CNN keras로 구현한 예 model = Sequential() nb_filter = 30 kernal_size = (5, 5) input_shape = (img_rows, img_cols, 1) model.add(Convolution2D(nb_filter, kernal_size[0], kernal_size[1], border_mode='valid', input_shape=input_shape)) model.add(Activation('relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(100)) model.add(Activation("relu")) model.add(Dense(10)) model.add(Activation("softmax")) model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) model.fit(X_train, Y_train, batch_size=100, nb_epoch=10, verbose=1, validation_data=(X_test, Y_test))
  • 7. Sequential 모델로 쉽게 레이어 구성 from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation model = Sequential() model.add(Dense(512, input_shape=(784,))) # 입력 784, 출력 512 model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(Dense(512)) # 입력 512(이전 레이어 입력), 출력 512 model.add(Activation('relu')) model.add(Dropout(0.2)) model.add(Dense(10)) # 입력 512(이전 레이어 입력), 출력 10 model.add(Activation('softmax'))
  • 8. 다양한 레이어 제공 • Dense : 완전 연결 NN 레이어 • Activation : 활성화 레이어 • Dropout : 드롭아웃 레이어 • BatchNormalization : 배치 정규화 • Convolution2D : 콘볼루션 레이어 • MaxPooling2D : Max 풀링 레이어 • LSTM, SimpleRNN, GRU : RNN 레이어 • 등등
  • 9. Dense 기초 • Dense의 입출력 관련 • output_dim: 출력 개수 • input_dim: 입력 개수 • input_shape: 입력 형상 model = Sequential() # 입력 16, 출력 32 model.add(Dense(32, input_shape=(16,))) # 첫 번째 레이어 이후로는 입력 개수 지정 필요 없음 # 앞 레이어의 출력 개수가 입력 개수가 됨 # 입력 32, 출력 64 model.add(Dense(64))
  • 10. Dense 기초 • Dense의 가중치 초기화, 가중치 정규화(감소) • init: 초기화 함수 이름 (weights가 없을 때 적용) • weights: 가중치 초기값 • W_regularizer: 가중치 정규화 • b_regularizer: bias 정규화 • bias: bias를 포함할지 여부 from keras.regularizers import l2 model.add(Dense(64, input_dim=64, init='he_normal', W_regularizer=l2(0.01)))
  • 11. 활성화 함수 • softmax • relu • tanh • sigmoid • hard_sigmoid • 등등 model.add(Activation('relu')) model.add(Activation('softmax'))
  • 12. 학습 프로세스 정의 옵티마이저 • SGD • RMSprop • Adagrad • Adam • 이 외 Adadelta, Adamax, Nadam loss 함수 • mean_squared_error • binary_crossentropy • categorical_crossentropy • sparse_categorical_crossentro py • 등등 model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
  • 13. 학습: model.fit() • x: 입력 데이터 • y: 라벨 • batch_size : 배치 크기 • nb_epoch: 학습 epoch 횟수 • verbose: 로깅 • 0:없음, 1:프로그레스바, 2, epoch 당 • validation_split: 0~1사이 실수 • 검증 용도로 사용할 홀드아웃 데이터 비율 • validation_data: (x, y) 검증 데이터 • validation_split은 무시 • shuffle: 각 epoch마다 샘플을 섞을지 여부 his = model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, verbose=2, validation_data=(X_test, Y_test))
  • 14. 평가: model.evaluate() • 파라미터 • x, y: 테스트 데이터, 라벨 • batch_size=32: 배치 크기 • verbose=1: 출력모드(0, 1) • sample_weight: 샘플 가중치 • 리턴 • 테스트 loss 값(모델이 메트릭이 없으면) 또는 스칼라 값 목록(모델이 다른 메트릭을 계산하면) score = model.evaluate(X_test, Y_test, verbose=0) print(model.metrics_names) # loss, acc print('Test score:', score[0]) # loss print('Test accuracy:', score[1]) # acc
  • 15. Callback • 학습 과정 데이터 관찰 용도 • 다양한 콜백 제공 • ModelCheckPoint • EarlyStopping • RemoteMonitor • TensorBoard • 등등 • 커스텀 구현 지원 tensorcallback = TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=True, write_images=False) his = model.fit(X_train, Y_train, …, callbacks=[tensorcallback]) 텐서보드 예
  • 16. 모델 정보 • model.summary() ____________________________________________________________________________________________________ Layer (type) Output Shape Param # Connected to ==================================================================================================== dense_1 (Dense) (None, 100) 78500 dense_input_1[0][0] ____________________________________________________________________________________________________ activation_1 (Activation) (None, 100) 0 dense_1[0][0] ____________________________________________________________________________________________________ dense_2 (Dense) (None, 10) 1010 activation_1[0][0] ____________________________________________________________________________________________________ activation_2 (Activation) (None, 10) 0 dense_2[0][0] ==================================================================================================== Total params: 79,510 Trainable params: 79,510 Non-trainable params: 0
  • 17. 참고 • keras.io • 밑바닥부터 시작하는 딥러닝