1. Keras 소개
    1. [시작하기] Sequential 모델 가이드
    2. [시작하기] 함수형 API 가이드
    3. [시작하기] FAQ
    4. [모델] Keras의 모델
    5. [모델] 함수형 API
    6. [모델] Sequential
    7. [계층] Keras의 계층
    8. [계층] Core 계층
    9. [계층] 합성곱 계층
    10. [계층] 풀링 계층
    11. [계층] 부분적으로 연결된 계층
    12. [계층] 재발 계층
    13. [계층] 임베딩 계층
    14. [계층] Merge 계층
    15. [계층] 고급 활성화 계층
    16. [계층] 표준화 계층
    17. [계층] 노이즈 계층
    18. [계층] 계층 Wrappers
    19. [계층] 자신만의 Keras 계층 만들기
    20. [전처리] 시퀀스 전처리
    21. [전처리] 텍스트 전처리
    22. [전처리] 이미지 전처리
  2. Metrics
  3. 손실
  4. 최적화기
  5. 활성화
  6. Callbacks
  7. 데이터셋
  8. 애플리케이션
  9. 백엔드 1
  10. 백엔드 2
  11. 백엔드 3
  12. 백엔드 4
  13. 백엔드 5
  14. 초기화기
  15. 정규화기
  16. 제한
  17. 시각화
  18. Scikit-Learn API
  19. 유용한 도구

Keras 백엔드

"백엔드"가 무엇인가요?

Keras는 모델 수준의 라이브러리로, 딥러닝 모델을 개발하기 위한 고수준의 빌딩 블록을 제공합니다. 텐서곱이나 합성곱 등과 같은 저수준의 연산을 직접 다루지는 않습니다. 대신에, “백엔드 엔진"으로서 역할하는 특화되고 최적화된 텐서 조작 라이브러리를 제공합니다. 특정 라이브러리 하나를 선택하여 거기에 의존하여 구현하기 보다는, Keras는 모듈화 방식으로 접근하여 여러 다른 백엔드 엔진이 원활하게 연결될 수 있도록 합니다.

현재, Keras에서는 다음과 같은 세 가지 백엔드 구현이 가능합니다: TensorFlow 백엔드, Theano 백엔드, CNTK 백엔드.

앞으로 더 많은 백엔드 선택지가 추가되기를 희망합니다.


하나의 백엔드에서 다른 백엔드로 전환하기

Keras를 한번이라도 구동하였다면, Keras 구성 파일을 다음 경로에서 찾을 수 있습니다:

$HOME/.keras/keras.json

만약 이 위치에 없다면 만들도록 하세요.

윈도 사용자를 위한 주의 사항: $HOME%USERPROFILE%로 바꾸세요.

구성 파일 기본값은 다음과 같습니다:

{
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}

간단하게 backend 부분을 "theano", "tensorflow", "cntk" 로 변경하면, Keras는 새로운 구성을 다음 Keras 코드 구동 시부터 적용합니다.

또한 다음과 같이 환경 변수 KERAS_BACKEND를 정의하여 구성 파일에 정의된 것에 오버라이드할 수도 있습니다:

KERAS_BACKEND=tensorflow python -c "from keras import backend"
Using TensorFlow backend.

keras.json 세부 사항

{
    "image_data_format": "channels_last",
    "epsilon": 1e-07,
    "floatx": "float32",
    "backend": "tensorflow"
}

이런 설정을 $HOME/.keras/keras.json을 편집하여 변경할 수 있습니다.


새로운 코드 작성을 위한 추상화 Keras 백엔드 사용하기

작성한 Keras 모듈이 Theano (th) 나 TensorFlow (tf) 모두에 사용가능하도록 하고자 한다면 추상화 Keras 백엔드 API를 통해 작성해야 합니다.

다음과 같이 백엔드 모듈을 들여올 수 있습니다:

from keras import backend as K

아래 코드는 입력 위치표시자(placeholder) 인스턴스를 생성합니다. 이 것은 tf.placeholder(), th.tensor.matrix(), th.tensor.tensor3() 등과 등가입니다.

input = K.placeholder(shape=(2, 4, 5))
# also works:
input = K.placeholder(shape=(None, 4, 5))
# also works:
input = K.placeholder(ndim=3)

아래 코드는 공유 변수 인스턴스를 생성합니다.이 것은 tf.Variable()th.shared()와 등가입니다.

import numpy as np
val = np.random.random((3, 4, 5))
var = K.variable(value=val)

# all-zeros variable:
var = K.zeros(shape=(3, 4, 5))
# all-ones:
var = K.ones(shape=(3, 4, 5))

필요한 대부분의 텐서 연산은 TensorFlow 나 Theano에서 처럼 할 수 있습니다 :

# Initializing Tensors with Random Numbers
b = K.random_uniform_variable(shape=(3, 4)). # Uniform distribution
c = K.random_normal_variable(shape=(3, 4)). # Gaussian distribution
d = K.random_normal_variable(shape=(3, 4)).
# Tensor Arithmetics
a = b + c * K.abs(d)
c = K.dot(a, K.transpose(b))
a = K.sum(b, axis=1)
a = K.softmax(b)
a = K.concatenate([b, c], axis=-1)
# etc...

백엔드 함수

backend

backend()

현재 사용 중인 백엔드를 확인하기 위해 공개적으로 접근 가능한 메소드입니다.

반환값

문자열이며, Keras가 현재 사용 중인 백엔드의 이름을 반환합니다.

예제

>>> keras.backend.backend()
'tensorflow'

epsilon

epsilon()

수치 표현에 있어 0으로 나뉘어지는 것을 방지하는 인자의 값을 반환합니다.

반환값

실수를 반환합니다.

예제

>>> keras.backend.epsilon()
1e-08

set_epsilon

set_epsilon(e)

수치 표현에 있어 0으로 나뉘어지는 것을 방지하는 인자의 값을 설정합니다.

인수

예제

>>> from keras import backend as K
>>> K.epsilon()
1e-08
>>> K.set_epsilon(1e-05)
>>> K.epsilon()
1e-05

floatx

floatx()

기본 실수 형식을 문자열로 반환합니다('float16', 'float32', 'float64').

반환값

문자열이며 현재 기본 실수 형식을 반환합니다.

예제

>>> keras.backend.floatx()
'float32'

set_floatx

set_floatx(floatx)