함수형 케라스
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 부분만 파라미터로 넣어주면 된다.
'🛠 기타 > Data & AI' 카테고리의 다른 글
Attention 기초 (리뷰 요약하기 예제) (1) | 2020.08.18 |
---|---|
Seq2Seq 기초 (챗봇 데이터 활용 예제) (2) | 2020.08.14 |
뉴스 헤드라인 기반 카테고리 분류하기 (0) | 2020.08.14 |
텐서플로우 허브 (0) | 2020.08.14 |
이미지 보강 (ImageDataGenerator) (0) | 2020.08.14 |