2018년 11월 1일 목요일

Keras 소개

앞으로의 딥러닝 과제에서는 Keras를 이용해서 알고리즘을 구현하려고 합니다. 이에, Keras에 주요 특징들에 대해 간략하게 소개합니다. 이 내용은 아래 블로그를 요약/정리한 것으로, 자세한 내용은 아래 링크를 참고하세요.





Abstract


Keras는 구글 엔지니어인 프랑소와 쏠레(François Chollet)가 개발한 파이썬 기반의 딥러닝 라이브러리입니다. 딥러닝 비전문가라도 각자 분야에서 손쉽게 딥러닝 모델을 개발하고 활용할 수 있도록 Keras는 직관적인 API를 제공하고 있습니다.

내부적으로는 텐서플로우(TensorFlow), 티아노(Theano), CNTK 등의 딥러닝 전용 엔진이 구동되지만, Keras 사용자는 복잡한 내부 엔진을 알 필요는 없습니다. 직관적인 API로 쉽게 다층퍼셉트론 모델, 컨볼루션 신경망 모델, 순환 신경망 모델 또는 이를 조합한 모델은 물론 다중 입력 또는 다중 출력 등 다양한 구성을 할 수 있습니다.



Keras의 주요 특징

1. 모듈화 (Modularity)

Keras에서 제공하는 모듈은 독립적이고 설정 가능하며, 가능한 최소한의 제약사항으로 서로 연결할 수 있습니다. 모델은 시퀀스 또는 그래프로 이러한 모듈들을 구성한 것입니다.
특히, 신경망 층, 비용함수, 최적화기, 초기화기법, 활성화함수, 정규화기법은 모두 독립적인 모듈이며, 새로운 모델을 만들기 위해 이러한 모듈을 조합할 수 있습니다.


2. 최소주의 (Minimalism)

각 모듈은 짥고 간결합니다. 모든 코드는 한 번 훑어보는 것으로도 이해가능해야 합니다. 단, 반복 속도와 혁신성에는 다소 떨어질 수가 있습니다. (재사용성이 높은 노드 구성 vs. 효율적인 노드 구성  / 간결성 vs. 설계 유연성 - commented by wsahn)


3. 쉬운 확장성

새로운 클래스나 함수로 모듈을 아주 쉽게 추가할 수 있습니다. 따라서 고급 연구에 필요한 다양한 표현을 할 수 있습니다.


4. 파이썬 기반

Caffe 처럼 별도의 모델 설정 파일이 필요없으며 파이썬 코드로 모델들이 정의됩니다.



Keras 기본 개념


Keras의 가장 핵심적인 데이터 구조는 바로 모델입니다. Keras에서 제공하는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있습니다. 다중 출력이 필요하는 등 좀 더 복잡한 모델을 구성하려면 Keras 함수 API를 사용하면 됩니다. Keras로 딥러닝 모델을 만들 때는 다음과 같은 순서로 작성합니다. 다른 딥러닝 라이브러리와 비슷한 순서이지만 훨씬 직관적이고 간결합니다.

1.데이터셋 생성하기

  • 원본 데이터를 불러오거나 시뮬레이션을 통해 데이터를 생성합니다. 
  • 데이터로부터 훈련셋, 검증셋, 시험셋을 생성합니다.
  • 이 때 딥러닝 모델의 학습 및 평가를 할 수 있도록 포맷 변환을 합니다.


2.모델 구성하기

  • 시퀀스 모델을 생성한 뒤 필요한 레이어를 추가하여 구성합니다.
  • 좀 더 복잡한 모델이 필요할 때는 케라스 함수 API를 사용합니다.

3. 모델 학습과정 설정하기

  • 학습하기 전에 학습에 대한 설정을 수행합니다.
  • 손실 함수 및 최적화 방법을 정의합니다.
  • 케라스에서는 compile() 함수를 사용합니다.

4. 모델 학습시키기

  • 훈련셋을 이용하여 구성한 모델로 학습시킵니다.
  • 케라스에서는 fit() 함수를 사용합니다.

5. 학습과정 살펴보기

  • 모델 학습 시 훈련셋, 검증셋의 손실 및 정확도를 측정합니다.
  • 반복횟수에 따른 손실 및 정확도 추이를 보면서 학습 상황을 판단합니다.

6. 모델 평가하기

  • 준비된 시험셋으로 학습한 모델을 평가합니다.
  • 케라스에서는 evaluate() 함수를 사용합니다.

7. 모델 사용하기

  • 임의의 입력으로 모델의 출력을 얻습니다.
  • 케라스에서는 predict() 함수를 사용합니다.

댓글 없음:

댓글 쓰기

[Scrap] Zero to Hero: Guide to Object Detection using Deep Learning: Faster R-CNN,YOLO,SSD

Zero to Hero: Guide to Object Detection using Deep Learning: Faster R-CNN,YOLO,SSD https://cv-tricks.com/object-detection/faster-r-cnn-yo...