Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

keras 빨리 훑어보기(intro)

16,823 views

Published on

keras에 대한 간략한 소개 자료와 샘플

Published in: Technology
  • Be the first to comment

keras 빨리 훑어보기(intro)

  1. 1. Keras 빨리 훑어보기 신림프로그래머, 최범균, 2017-03-06
  2. 2. Keras • 딥러닝 라이브러리 • Tensorflow와 Theano를 backend로 사용 • 특장점 • 쉽고 빠른 구현 (레이어, 활성화 함수, 비용 함수, 최적화 등 모듈화) • CNN, RNN 지원 • CPU/GPU 지원 • 확장성 (새 모듈을 매우 간단하게 추가 가능) • 파이선 코드로 모델 생성
  3. 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. 밑바닥딥러닝 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. 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. 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. 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. 8. 다양한 레이어 제공 • Dense : 완전 연결 NN 레이어 • Activation : 활성화 레이어 • Dropout : 드롭아웃 레이어 • BatchNormalization : 배치 정규화 • Convolution2D : 콘볼루션 레이어 • MaxPooling2D : Max 풀링 레이어 • LSTM, SimpleRNN, GRU : RNN 레이어 • 등등
  9. 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. 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. 11. 활성화 함수 • softmax • relu • tanh • sigmoid • hard_sigmoid • 등등 model.add(Activation('relu')) model.add(Activation('softmax'))
  12. 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. 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. 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. 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. 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. 17. 참고 • keras.io • 밑바닥부터 시작하는 딥러닝

×