Keras: 파이썬 딥러닝 라이브러리
여러분은 지금 막 Keras를 발견했습니다.
Keras는 파이썬으로 작성되었으며 TensorFlow, CNTK 또는 Theano 위에서 실행되는 고수준(high-level) 신경망(neural networks) API입니다. 빠른 실험 수행을 가능하게 하는 것에 중점을 두고 개발되었습니다. 아이디어에서 결과로 나아가는 데 발생하는 지연을 최소화하는 것이 좋은 연구를 하는 열쇠입니다.
다음과 같은 기능을 가진 딥러닝 라이브러리가 필요하다면 Keras를 사용하십시오.
- (사용자 편의성, 모듈성 및 확장성을 통한) 쉽고 빠른 프로토타이핑이 가능합니다.
- 합성곱 신경망(Convolutional networks)와 재발 신경망(Recurrent networks)을 모두 지원하며, 둘이 결합된 것도 지원합니다.
- CPU와 GPU에서 매끄럽게 실행됩니다.
Keras.io에서 전체 문서를 읽을 수 있습니다.
Keras는 다음 파이썬 버전에서 사용할 수 있습니다: Python 2.7-3.5.
가이드 원칙
- 사용자 편의성. Keras는 기계가 아닌 인간을 위해 설계된 API입니다. 사용자 경험을 중심에 놓습니다. Keras는 인지 부하를 줄이는 모범 사례를 따르고 있습니다. 일관성 있고 간단한 API를 제공하며, 일반적인 사용 사례에 필요한 사용자 작업의 수를 최소화하고, 오류 발생 시 명확하고 실용적인 피드백을 제공합니다.
- 모듈화. 모델은 독립적이고 완전히 설정 가능한 모듈을 선형적으로 연결하거나 그래프로 구성한 것으로, 가능한 최소한의 제한으로 함께 연결할 수 있습니다. 특히, 신경 계층(neural layers), 비용 함수(cost functions), 최적화기(optimizers), 초기화 스킴(initialization schemes), 활성화 함수(activation functions), 정규화 스킴(regularization schemes)은 모두 독립적인 모듈로, 새로운 모델을 생성하기 위해 결합할 수 있습니다.
- 쉬운 확장성. 새로운 모듈은 (새로운 클래스와 함수를 통해) 추가하기 쉽고, 기존 모듈은 충분한 예제를 제공합니다. 새로운 모듈을 쉽게 만들 수 있으므로 자유로운 표현이 가능하며, 따라서 Keras는 고급 연구에 적합합니다.
- 파이썬으로 작업. 선언적 형식의 모델 설정 파일이 별도로 존재하지 않습니다. 모델은 파이썬 코드로 작성되므로 작고, 디버그하기 쉽고, 확장성이 좋습니다.
시작하기: Keras 30초 맛보기
Keras의 핵심 데이터 구조는 모델이며 계층(layer)을 구성하는 데 이용합니다. 가장 간단한 유형의 모델은 Sequential
모델로, 계층을 선형적으로 쌓은 것입니다. 더 복잡한 아키텍처의 경우 Keras 함수형 API를 사용해야 합니다. 이 API를 사용하면 임의의 계층 그래프를 구성할 수 있습니다.
Notice
CodeOnWeb에서는 따로 파이썬을 설치하지 않더라도 코드박스 아래의 실행 버튼을 클릭하여 바로 파이썬 코드를 실행해볼 수 있습니다. TensorFlow, Theano와 같은 백엔드 코드도 마찬가지로 설치 없이 실행 버튼만 눌러 실행할 수 있습니다. 'Keras 연습하기' 과정에서는 실행 결과까지 출력하는 예제 코드에 대해서만 실행하여 결과를 확인할 수 있도록 하였습니다.
Sequential
모델은 다음과 같이 초기화할 수 있습니다:
.add()
를 이용하면 계층을 손쉽게 쌓을 수 있습니다:
모델이 적당히 구축되었다면 .compile()
메소드(method)를 이용해서 학습 과정을 구성할 수 있습니다:
필요한 경우 최적화기를 구성할 수도 있습니다. Keras의 핵심 원칙은 구성을 합리적인 수준으로 간단하게 만드는 동시에, 사용자가 필요할 때는 완벽하게 제어할 수 있도록 하는 것입니다(궁극적으로 소스 코드의 쉬운 확장성을 제공).
이제 훈련 데이터를 batch 단위로 반복처리할 수 있습니다:
또는, batch 데이터를 여러분이 직접 모델에 공급할 수도 있습니다:
한 줄만 써주면 성능을 평가해볼 수 있습니다:
새로운 데이터에 관한 결과를 예측해볼 수도 있습니다:
질문 응답 시스템, 이미지 분류 모델, 뉴럴 튜링 머신(Neural Turing Machine), 기타 다른 모델을 구축하는 작업도 이처럼 빠르게 할 수 있습니다. 딥러닝 이면에 있는 아이디어는 참 간단한데, 구현이 어려워야만 할 이유가 있을까요?
Keras에 관한 더 자세한 튜토리얼은 다음 문서를 참고하십시오.
예제 폴더에서는 메모리 네트워크를 통한 질문 응답, 스택 LSTM을 이용한 텍스트 생성 등과 같은 보다 고급 모델을 찾아볼 수 있습니다.
설치
Keras는 다음과 같은 의존성을 가지고 있습니다:
- numpy, scipy
- yaml
- HDF5 and h5py (필수는 아니지만 모델을 저장하고 불러오는 함수를 이용하려면 필요합니다)
- 필수는 아니지만 CNN을 사용한다면 추천합니다: cuDNN.
TensorFlow 백엔드를 사용할 경우:
- TensorFlow
CNTK 백엔드를 사용할 경우:
- CNTK
Theano 백엔드를 사용할 경우:
- Theano
Keras를 설치하기 위해 Keras 폴더로 cd
하고 설치 명령을 실행하십시오.
PyPI를 통해 Keras를 설치할 수도 있습니다.
TensorFlow에서 CNTK나 Theano로 전환하기
기본적으로 Keras는 텐서 조작 라이브러리로 TensorFlow를 사용합니다. Keras 백엔드를 설정하고 싶다면 이 문서를 참고하십시오.
지원
질문을 하거나 개발에 관한 의견을 개진할 수 있습니다.
- Keras 구글 그룹.
- Keras Slack 채널. 채널에 초대받고 싶다면 이 링크를 사용하십시오.
Github 이슈를 통해 버그 리포트와 기능 요청을 할 수도 있습니다. 이는 오직 Github에서만 가능하며, 가이드라인을 먼저 참고해주십시오.
Keras라는 이름은?
Keras(κέρας)는 그리스어로 뿔(horn)을 의미합니다. 오딧세이에서 처음 발견되는 그리스 및 라틴 문학의 문학적 이미지를 참고하였는데, 이에 따르면 꿈의 영혼(Oneiroi, 단수형은 Oneiros)은 상아로 된 문을 통해 이승에 도달하여 가짜 환영으로 사람들을 속이는 영혼과, 뿔로 된 문을 통해 이승에 도달하여 실제로 이루어질 미래를 알려주는 영혼으로 나뉜다고 합니다. κέρας(horn, 뿔) / κραίνω(fulfill, 이행), ἐλέφας(ivory, 상아) / ἐλεφαίρομαι(deceive, 속임수)를 이용한 일종의 말장난 입니다.
Keras는 원래 ONEIROS(Open-ended Neuro-Electronic Intelligent Robot Operating System) 프로젝트의 연구 노력의 일환으로 개발되었습니다.
"오네이로이는 우리의 이해를 넘어서 있다. 그것이 어떤 이야기를 들려줄 것인지 누가 확신할 수 있겠는가? 사람들이 원한다고 해서 모든 것이 다가오지는 않는다. 덧없는 오네이로이가 지나갈 수 있는 두 개의 문이 있다. 하나는 뿔로, 다른 하나는 상아로 만들어어져 있다. 톱니 모양의 상아를 지나온 오네이로이는 기만적이고 이루어질 수 없는 메시지를 가지고 온다. 잘 연마된 뿔을 지나온 오네이로이는 그 뒤에 진실을 달고 오는데, 이 진실은 알아보는 사람들에 의해 성취된다." 호머, 오딧세이 19. 562 ff (Shewring 번역).
이 문서는 Keras의 Home을 번역한 것입니다.
최종 수정일: 2017년 8월 17일.
토론이 없습니다