Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.

keras 빨리 훑어보기(intro)

19.536 visualizaciones

Publicado el

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

Publicado en: Tecnología
  • Sé el primero en comentar

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 • 밑바닥부터 시작하는 딥러닝

×