Advanced Keras Technics

신경망 모델이나 최적화 방법을 주어진 문제에 맞게 변형할 경우 필요한 고급 기능

  • Lambda Layer
  • 백엔드(K) 함수
  • 개별 엔진 직접 호출 함수

[Lambda 계층]

  • 케라스 패키지에서 제공하지 않는 새로운 인공신경망 기능을 추가 하는 법
  • 구현 2가지 방법
    • 케라스 Lambda 계층과 파이썬 lambda를 이용하는 방법
    • lambda를 이용하기 복잡할 때 함수를 만들어서, kshape 은 출력 벡터의 크기를 정의. 함수로 람다 계층을 처리 할 때 함수 내부에서 입력 벡터의 모양을 변경하는 경우 사용. 여기서는 입력 벡터와 같은 출력 벡터가 나간다고 가정함. 만약 출력 벡터가 입력 벡터에 비해 두 배로 커지는 경우는 input_shape[1] *= 2 처럼 처리.
    • input_shape[0] 은 batch size

 

[백엔드 함수 활용]

  • 케라스 백엔드 함수들을 사용하면 다른 엔진의 함수들을 같은 이름과 방법으로 접근해 사용 할 수 있음
  • 예시, 백엔드 함수들을 이용하여 Lambda 계층 만들기
    • 케라스에서, 모델을 구성 시 일반적으로 x[배치 크기, 피쳐 크기]일 때 input_shape=(피쳐 크기,)라고만 입력하면 되지만 Lambda를 활용한 계층 내부 함수들은 배치 크기와 피쳐 크기를 모두 처리해야함.

  • 예시, 백엔드 함수는 손실 함수를 만드는 데도 사용할 수 있음

 

[엔진 전용 함수 사용하기]

  • 때로는 각 엔진에 특화된 기능을 만들 필요가 있음, 가령 구글 텐서플로
  • 케라스의 백엔드 패키지가 개별 엔진이 제공하는 모든 함수를 제공하는 것은 아님. 이 경우 각 엔진의 함수를 직접 사용하여 문제를 해결 할 수 있음

  • 케라스 백엔드와 텐서플로 엔진의 함수 이름과 사용 방법에는 약간 차이가 있을 수 있음. 가령 K.concatenate() vs tf.concat()
  • 케라스에서는 전용 함수를 호출할 때 추가 코딩 없이도 백엔드 함수처럼 바로 사용 할 수 있어 부담이 없음