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()
반응형
'머신러닝공부' 카테고리의 다른 글
Functional API 사용시 혼동하는 경우 간단 정리 (0) | 2022.12.30 |
---|---|
Functional API with CNN Example script (0) | 2022.12.30 |
GRU(Gated Recurrent Unit) 게이트 순환 유닛 간단정리 (0) | 2022.12.29 |
LSTM을 활용한 삼성 주가 예측 스크립트 (0) | 2022.12.29 |
LSTM 개념, 구조, 동작원리 간단 정리(Long Short-Term memory) (0) | 2022.12.29 |