본문 바로가기

머신러닝공부

Functional API 모델, 간단 요약 정리

728x90
반응형

Fucntion API 모델의 필요성

Sequential API 방식은 입력부터 출력까지 일직선으로 연결되어 있어 직관적이고 편리한 장점이 있으나, 여러개의 층을 공유하거나 다양한 종류의 입력과 출력을 사용해서 복잡한 모델을 만드는 일에는, 일직선 구조로 인해 한계가 있다.

두 모델은 모델 구축 부분을 제외한 compile, fit, evaluage, predict 부분은 모두 동일하다.

 

Functional API 구축 instructure

1. 입력 데이터 shape을 tf.keras.layers.Input() 함수의 인자로 넣어주어 입력층을 정의

2. 이전 층 출력 값을 다음 층 함수의 입력 값으로 사용한 후에,

3. tf.keras.model.Model() 함수에 입력과 출력을 넣어주어 모델 구축을 완성함

 

# Sequential API 모델
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflw.keras.layers import Dense

model = Sequential()
model.add(Dense(8, activation='relu', input_shape(4,))
model.add(Dense(16, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(10, activation='softmax'))
model.summary()
# Functional API 모델
import tensorflow as tf
from tensorflow.keras.layers import Input, Dense
from tensorflow.keras.models import Model

# 1번
input_=Input(shape=(4,))

# 2번
x=Dense(8, activation='relu')(input_)
x=Dense(16, activation='relu')(x)
x=Dense(32, activation='relu')(x)

output_=Dense(10, activation='softmax')(x)

# 3번
model = Model(Input=input_, output=output_)

model.summary()

 

다중 입력에 대한 Functional API 모델 구축 예시

from tensorflow.keras.layers import Input, Dense, concatenate
from tensorflow.keras.models import Model

# 입력층 1에 대한 신경망
input_1 = input(shape=(4,))

hidden_1 = Dense(8, activation='relu')(input_1)
hidden_2 = Dense(16, activation='relu')(hidden_1)

output_1 = Model(input=input_1, output=hidden_2)

# 입력층 2에 대한 신경망
input_2 = Input(shape=(8,))

hidden_3 = Dense(8, activation='relu')(input_2)
output_2 = Model(inputs=input_2, outputs=hidden_3)

# 층 연결
result = concatenate([output_1, output, output_2, output])

# 출력층 정의
output_ = Dense(10, activation='soft max')(result)

# 최종 모델 구축
model = Model(input = [output_1, input, output_2, input], outputs=output_)

model.summary()
반응형