Home [Deep Learning] 10. Functional API
Post
Cancel

[Deep Learning] 10. Functional API

__call__ magic method

  • 객체를 함수처럼 호출 할 수 있도록 한다.
  • 객체() 로 호출 할 때 __call__ 메소드가 호출되어 실행된다.

Functional API

  • Sequential 모델은 각 Layer들의 입력과 출력이 하나라고 가정한다. 그리고 각각의 Layer(입력층, 은닉층, 출력층)들을 차례대로 쌓아 구성한다. 그래서 다양한 구조의 네트워크를 만드는데 한계가 있다.
  • 함수형 API를 사용하면 다중입력, 다중출력, 그래프 형태의 다양한 형태의 레이어들을 유연하게 구성할 수 있다.

  • Functional API는 직접 텐서들의 입출력을 다룬다.
  • 함수호출 처럼 Layer를 이용하여 입력 텐서(Input Tensor)를 입력 받고 그 결과를 출력 텐서(Output Tensor)로 반환하는 형식으로 모델을 구현한다.
1
2
3
4
5
input_tensor = Input(shape=(16,))
dense = layers.Dense(32, activation='relu')(input_tensor)
output_tensor = layers.Dense(32, activation='sigmoid')(dense)

model = models.Model(input_tensor, output_tensor)

여러개의 출력결과를 합치는 Layer

  • 앞 레이어들에서 출력된 값이 여러개이고 이것을 하나의 Layer의 입력으로 넣어 줄 경우 여러개의 출력값을 합쳐 줘야 한다. 이때 단순이 합치거나 element wise 연산을 통해 합칠 수 있다.
  • 함수와 Layer class 두가지 방식을 제공한다.
    • tensorflow.keras.layers 모듈로 제공
  • concatenate(list, axis=-1)/Concatenate(axis=-1)([list])
    • 레이어들을 단순히 합친다. (붙이는 처리)
    • list: 합칠 레이어들을 리스트에 묶어 전달
    • axis: 합칠 기준축. (기본값: -1 : 마지막 축기준)
  • add(list)/Add()(list), substract(list)/Subtract()(list), multiply(list)/Multiply()(list)
    • 같은 index의 값들을 계산해서(더하기, 빼기, 곱하기) 하나의 레이어로 만든다.
    • list: 합칠 레이어들을 리스트에 묶어 전달
This post is licensed under CC BY 4.0 by the author.