[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

🛠 기타/Data & AI

함수형 케라스와 모델 합성(앙상블)

inu 2020. 8. 14. 12:59
반응형

함수형 케라스

inputs = Input(shape=(25,))
embed = Embedding(10000, 32)(inputs)
drop = Dropout(0.3)(embed)
  • 케라스 각 레이어를 함수처럼 선언하여 활용할 수도 있다.
  • 각 아웃풋이 다음 레이어의 인풋이 되는 형태이다.

모델 합성 (앙상블)

inputs = Input(shape=(25,))
concat_layers = []

conv = Conv1D(32, 1, padding='same', activation='relu')(drop)
pool = GlobalMaxPooling1D()(conv)
flat = Flatten()(pool)
concat_layers.append(flat)

conv = Conv1D(32, 2, padding='same', activation='relu')(drop)
pool = GlobalMaxPooling1D()(conv)
flat = Flatten()(pool)
concat_layers.append(flat)

conv = Conv1D(32, 3, padding='same', activation='relu')(drop)
pool = GlobalMaxPooling1D()(conv)
flat = Flatten()(pool)
concat_layers.append(flat)

#####

concat = Concatenate()(concat_layers)
relu = Dense(64, activation='relu')(concat)
drop = Dropout(0.5)(relu)

outputs = Dense(13, activation="softmax")(drop)

model = Model(inputs, outputs)
  • 함수형 케라스를 활용해 앙상블 모델을 만들 수 있다.
  • 각 함수형 케라스 모델을 리스트에 넣고 그를 Concatenate()하여 하나로 합쳐준다.
  • 최종적으로 모델을 만들땐 제일 처음 레이어(사실 입력만 받는 층이라 레이어라고 부르기도 애매하긴하다.)인 inputs 부분과 마지막 레이어인 outputs 부분만 파라미터로 넣어주면 된다.
반응형