파이썬 딥러닝 라이브러리 Keras의 간단한 소개 및 설치 방법



영어 실력은 다소 부족하여 해석에 오류가 많을 수 있습니다 !! 
구글 번역기의 힘도 다소 빌렸습니다. 
이제 번역기가, 저보다 나을 때가 더 많네요. 
오역은 메일로 수정 요청 해주세요 


Keras: The Python Deep Learning library



@ 원문 

Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation. Being able to go from idea to result with the least possible delay is key to doing good research.
Use Keras if you need a deep learning library that:
  • Allows for easy and fast prototyping (through user friendliness, modularity, and extensibility).
  • Supports both convolutional networks and recurrent networks, as well as combinations of the two.
  • Runs seamlessly on CPU and GPU.
Read the documentation at Keras.io.

@ 해석 

Keras는 파이썬으로 쓰이고, 텐서플로우, CNTK, Theano 등에서 사용가능한, 고수준의 neural networks API 입니다. 
Keras는 빠른 실험을 성취하기 위한 목적으로 개발되었습니다. 
가능한 지연을 최소화하면서 아이디어에서 결과로 갈 수 있다는 것이 좋은 연구를하는 핵심입니다.

딥러닝 라이브러리를 위한 Keras 사용 : 
    - 쉽고 빠른 프로토타이핑 가능 
    - convolutional 네트워크와 recurrent 네트워크를 지원하고, 두 개의 결합도 가능하다. 
    - CPU 및 GPU에서 원활하게 실행됩니다.


@ 원문

Guiding principles

  • User friendliness. Keras is an API designed for human beings, not machines. It puts user experience front and center. Keras follows best practices for reducing cognitive load: it offers consistent & simple APIs, it minimizes the number of user actions required for common use cases, and it provides clear and actionable feedback upon user error.

  • Modularity. A model is understood as a sequence or a graph of standalone, fully-configurable modules that can be plugged together with as little restrictions as possible. In particular, neural layers, cost functions, optimizers, initialization schemes, activation functions, regularization schemes are all standalone modules that you can combine to create new models.

  • Easy extensibility. New modules are simple to add (as new classes and functions), and existing modules provide ample examples. To be able to easily create new modules allows for total expressiveness, making Keras suitable for advanced research.

  • Work with Python. No separate models configuration files in a declarative format. Models are described in Python code, which is compact, easier to debug, and allows for ease of extensibility.


@ 해석 

지침
 (여기는 해석이 잘 안되서 구글 번역기의 힘을 많이 빌렸습니다. ) 

- 유저 친화적 : Keras는 기계가 아닌 사람을 위해 고안된 API입니다. 사용자 경험을 전면과 중앙에 내세웁니다. Keras는 reducing cognitive load 를 위한 모범 답안(최선의 파라미터)을 따릅니다. Keras는 일정하고 간단한 API를 제공하며, 일반적인 사용 사례에 필요한 사용자 작업의 수를 최소화하고 사용자 오류시 명확하고 실용적인 피드백을 제공합니다.
- 모듈성 : 모델은 가능한 한 최소한의 제한으로 함께 연결할 수 있는 독립형 완전 구성 가능 모듈의 시퀀스 또는 그래프로 이해됩니다. 특히, 신경층, 비용 함수, 옵티 마이저, 초기화 스킴, 활성화 함수, 정규화 스킴은 모두 새로운 모델을 생성하기 위해 결합 할 수있는 독립 실행 형 모듈입니다.
쉬운 확장성 : 새로운 모듈은 (새로운 클래스와 함수로서) 추가하기 쉽고, 기존 모듈은 충분한 예제를 제공합니다. 새로운 모듈을 쉽게 만들 수 있기 때문에 Keras가 고급 연구에 적합하도록 총 표현력을 허용합니다.
- Python : 선언적 형식의 별도 모델 구성 파일이 없습니다. 모델은 작고, 디버그하기 쉽고, 확장성이 용이 한 Python 코드로 설명됩니다.


@ 설치 방법 - 원문 

Before installing Keras, please install one of its backend engines: TensorFlow, Theano, or CNTK. We recommend the TensorFlow backend.

You may also consider installing the following optional dependencies:

  • cuDNN (recommended if you plan on running Keras on GPU).
  • HDF5 and h5py (required if you plan on saving Keras models to disk).
  • graphviz and pydot (used by visualization utilities to plot model graphs).

Then, you can install Keras itself. There are two ways to install Keras:

  • Install Keras from PyPI (recommended):
sudo pip install keras

If you are using a virtualenv, you may want to avoid using sudo:

pip install keras
  • Alternatively: install Keras from the Github source:

First, clone Keras using git:

git clone https://github.com/fchollet/keras.git

Then, cd to the Keras folder and run the install command:

cd keras
sudo python setup.py install


@ 설치방법 - 해석 

keras를 설치하기 위해서는 Theano, CNTK, TensorFlow 의 3가지 중 하나를 다운 받아야 합니다. 
TensorFlow를 추천합니다. 

또, 선택적으로 아래의 파일들을 설치할 수 있습니다. 

  • cuDNN (recommended if you plan on running Keras on GPU).
  • HDF5 and h5py (required if you plan on saving Keras models to disk).
  • graphviz and pydot (used by visualization utilities to plot model graphs).


  • PyPI 에서 keras를 설치
sudo pip install keras

virtualenv를 이용한다면

pip install keras


git 으로 파일을 다운 받아서 폴더로 이동 후에 설치하는 방법 

git clone https://github.com/fchollet/keras.git
cd keras
sudo python setup.py install



@ 원문

Getting started: 30 seconds to Keras

The core data structure of Keras is a model, a way to organize layers. The simplest type of model is the Sequentialmodel, a linear stack of layers. For more complex architectures, you should use the Keras functional API, which allows to build arbitrary graphs of layers.

Here is the Sequential model:

from keras.models import Sequential

model = Sequential()

Stacking layers is as easy as .add():

from keras.layers import Dense

model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))

Once your model looks good, configure its learning process with .compile():

model.compile(loss='categorical_crossentropy',
              optimizer='sgd',
              metrics=['accuracy'])

If you need to, you can further configure your optimizer. A core principle of Keras is to make things reasonably simple, while allowing the user to be fully in control when they need to (the ultimate control being the easy extensibility of the source code).

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

You can now iterate on your training data in batches:

# x_train and y_train are Numpy arrays --just like in the Scikit-Learn API.
model.fit(x_train, y_train, epochs=5, batch_size=32)

Alternatively, you can feed batches to your model manually:

model.train_on_batch(x_batch, y_batch)

Evaluate your performance in one line:

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)

Or generate predictions on new data:

classes = model.predict(x_test, batch_size=128)

Building a question answering system, an image classification model, a Neural Turing Machine, or any other model is just as fast. The ideas behind deep learning are simple, so why should their implementation be painful?

For a more in-depth tutorial about Keras, you can check out:

In the examples folder of the repository, you will find more advanced models: question-answering with memory networks, text generation with stacked LSTMs, etc.


@ 해석 

Keras의 핵심 데이터 구조는 model(레이어를 구성하는 방법)입니다. 
가장 간단한 형태의 model은 Sequential(layer 의 선형 스택)입니다. 
보다 복잡한 아키텍처의 경우 Keras 함수 API를 사용해야합니다.
이 API를 사용하면 임의의 그래프 그래프를 작성할 수 있습니다.

1
2
3
from keras.models import Sequential
 
model = Sequential()
cs

위의 소스코드를 입력하려고 하면, 에러가 발생합니다.

>>> from keras.models import Sequential

Using TensorFlow backend.

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "/Library/Python/2.7/site-packages/keras/__init__.py", line 3, in <module>

    from . import utils

  File "/Library/Python/2.7/site-packages/keras/utils/__init__.py", line 6, in <module>

    from . import conv_utils

  File "/Library/Python/2.7/site-packages/keras/utils/conv_utils.py", line 3, in <module>

    from .. import backend as K

  File "/Library/Python/2.7/site-packages/keras/backend/__init__.py", line 83, in <module>

    from .tensorflow_backend import *

  File "/Library/Python/2.7/site-packages/keras/backend/tensorflow_backend.py", line 1, in <module>

    import tensorflow as tf

ImportError: No module named tensorflow

>>> 


sudo pip intall tensorflow
그러면 위의 명령어를 사용하여 tensorflow를 설치해 줍니다. 

Python 2.7.10 (default, Jul 15 2017, 17:16:57) 

[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin

Type "help", "copyright", "credits" or "license" for more information.

>>> from keras.models import Sequential

Using TensorFlow backend.

dyld: warning, LC_RPATH $ORIGIN/../../_solib_darwin_x86_64/_U_S_Stensorflow_Spython_C_Upywrap_Utensorflow_Uinternal.so___Utensorflow in /Library/Python/2.7/site-packages/tensorflow/python/_pywrap_tensorflow_internal.so being ignored in restricted program because it is a relative path

dyld: warning, LC_RPATH $ORIGIN/../../../../../_solib_darwin_x86_64/_U_S_Stensorflow_Scontrib_Srnn_Cpython_Sops_S_Ugru_Uops.so___Utensorflow in /Library/Python/2.7/site-packages/tensorflow/contrib/rnn/python/ops/_gru_ops.so being ignored in restricted program because it is a relative path

dyld: warning, LC_RPATH $ORIGIN/../../../../../_solib_darwin_x86_64/_U_S_Stensorflow_Scontrib_Srnn_Cpython_Sops_S_Ulstm_Uops.so___Utensorflow in /Library/Python/2.7/site-packages/tensorflow/contrib/rnn/python/ops/_lstm_ops.so being ignored in restricted program because it is a relative path

dyld: warning, LC_RPATH 

설치하고 아래의 명령어를 입력하면 Warning이 뜨긴 하지만, 잘 진행됩니다. 

from keras.models import Sequential 


model 을 보면 아래와 같이 잘 입력되었군요. 

>>> model = Sequential()

>>> model
<keras.models.Sequential object at 0x106f5a950>


레이어를 stacking 할 때에는 
.add():

>>> from keras.layers import Dense

>>> 

>>> model.add(Dense(units=64, activation='relu', input_dim=100))

>>> model.add(Dense(units=10, activation='softmax'))

>>> model
<keras.models.Sequential object at 0x106f5a950>


모델이 좋아 보이면 학습 과정을 다음과 같이 구성하십시오 .compile():

>>> model.compile(loss='categorical_crossentropy',

...               optimizer='sgd',
...               metrics=['accuracy'])


필요한 경우 옵티마이저가 더 구성 할 수 있습니다. Keras의 핵심 원칙은 상황을 합리적으로 간단하게 만드는 동시에 사용자가 필요할 때 완벽하게 제어 할 수 있도록하는 것입니다 (궁극적인 제어는 소스 코드의 쉬운 확장).

>>> model.compile(loss=keras.losses.categorical_crossentropy,

...               optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>
NameError: name 'keras' is not defined


소스코드를 그대로 입력하면 위와 같은 에러가 뜨더라구요.
아래와 같이 입력해주세요. 

>>> import keras

>>> model.compile(loss=keras.losses.categorical_crossentropy,
...               optimizer=keras.optimizers.SGD(lr=0.01, momentum=0.9, nesterov=True))


이제 일괄적으로 교육 데이터를 반복 할 수 있습니다.

model.train_on_batch(x_batch, y_batch)


한 줄로 성능을 평가합니다. 

loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)


새로운 데이터에 대한 예측을 생성한다

classes = model.predict(x_test, batch_size=128)


질문 응답 시스템, 이미지 분류 모델, Neural Turing Machine 또는 다른 모델을 구축하는 것이 빠른 속도입니다.
깊은 학습의 아이디어는 간단한데, 구현이 어려울 이유가 있을까요?

Keras에 대한 더 자세한 정보는 다음을 참조하십시오.



실제 사례나 GUI 가 없어서 와닿지 않는데 향후 포스팅 하겠습니다. 


출처 : https://keras.io/#getting-started-30-seconds-to-keras