파이썬 딥러닝 - 01. 케라스 소개

2020. 1. 4. 21:53Tech :Deep Learning

"케라스" 는 파이썬으로 구현된 쉽고 간결한 딥러닝 라이브러리 내부적으로 텐서플로우Tensorflow, 티아노Theano,CNTK 등의 딥러닝 전용 엔진이 구동되지만 내부엔진을 알 필요 없이 직관적인 API로 쉽게 다층퍼셉트론 신경망 모델, 컨벌루션 신경망 모델, 순환 신경망 모델 등 다양한 구성을 할 수 있다.

모델 수준 라이브러리로 딥러닝 모델을 개발하기 위해 이용되는데 tensor, convolution과 같은 수준의 작업은 Keras의 "백 엔드 엔진"역할을 하는 텐서 조작 라이브러리를 이용한다. Keras에서 구동될 수 잇는 3개의 백엔드는

1. "Tensorflow" 구글에서 개발한 오픈 소스 텐서 조작 프레임 워크

2. "Theano" Université de Montréal의 LISA Lab에서 개발 한 오픈 소스 기호 텐서 조작 프레임 워크

3. "CNTK" Microsoft에서 개발한 딥러닝을 위한 오픈 소스 툴킷

이 있다. Keras를 한 번 이상 실행 한 경우 backend가 저장되기 때문에 바꿔주려 할땐 https://keras.io/backend/를 참고하면 된다.--> 'C:\Users\[사용자이름]\.keras\keras.json' 파일에서 "backend" : 부분을 "tensorflow", "theano" 이런 식으로 바꾸고 cmd창을 재부팅 하면 된다.

케라스의 가장 핵심적인 데이터 구조는 바로 "모델" 이다. 케라스에서 제공되는 시퀀스 모델로 원하는 레이어를 쉽게 순차적으로 쌓을 수 있는데 다중 출력과 같이 좀 더 복잡한 모델을 구성하려면 케라스 함수 API를 사용하면 된다. 케라스로 딥러닝 모델을 만들 때는 다음과 같은 순서로 작성한다.

1. 데이터셋 생성하기 : 원본 데이터를 불러오거나 시뮬레이션을 통해 데이터 생성. Training set, Test set, Validation set을 생성하며 이 때 모델의 학습 및 평가를 할 수 있도록 format 변환을 한다.

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

3. 모델 학습과정 설정하기 : 학습하기 전 학습에 대한 설정을 수행하는데 Loss 함수(ex. cross-entropy) 및 최적화 방법(ex. Gradient Descent)을 정의하고 케라스에서는 compile() 함수를 사용한다.

4. 모델 학습시키기 : 구성한 모델을 Training dataset으로 학습시키는데 fit() 함수를 사용한다.

5. 학습과정 살펴보기 : 모델 학습 시 Training dataset, Validation dataset의 Loss 및 Accuracy를 측정하고 반복 횟수(epoch)에 따른 Loss 및 Accuracy 추이를 보며 학습 상황을 판단한다.

6. 모델 평가하기 : 준비된 Test dataset으로 학습한 모델을 평가하는데 evaluate() 함수를 사용한다.

7. 모델 사용하기 : 임의의 입력으로 모델의 출력을 얻는데 predict() 함수를 사용한다.