더북(TheBook)

이제 모델을 생성합니다.

코드 2-6 모델 생성 및 컴파일

from tensorflow.keras.layers import Input, Dense, Activation, Dropout ------ 케라스 API를 이용하여 Input, Dense, Activation, Drop 클래스를 호출
from tensorflow.keras.models import Model ------ 역시 케라스 API를 이용하여 Model 클래스 호출

input_layer = Input(shape=(X.shape[1],)) ------①
dense_layer_1 = Dense(15, activation='relu')(input_layer)
dense_layer_2 = Dense(10, activation='relu')(dense_layer_1)
output = Dense(y.shape[1], activation='softmax')(dense_layer_2)

model = Model(inputs=input_layer, outputs=output)


model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])

model.summary()

model.summary() 결과에서 확인할 수 있는 것처럼 모델은 밀집층(혹은 완전연결층이라고도 함) 총 세 개로 구성되어 있습니다. 처음 두 개는 각각 렐루(ReLU) 활성화 함수를 사용하는 노드 15개와 노드 열 개로 구성되어 있습니다. 마지막 밀집층은 노드 네 개(y.shape[1] == 4)와 소프트맥스(softmax) 활성화 함수를 포함하고 있습니다. 또한, 손실 함수로 categorical_crossentropy를 사용하며, 옵티마이저는 아담(Adam)을 사용합니다. 참고로 sparse_categorical_crossentropycategorical_crossentropy 모두 다중 분류에 대한 손실 함수로 사용합니다. 하지만 categorical_crossentropy의 출력 값은 원-핫 인코딩된 결과가 출력되지만, sparse_categorical_crossentropy는 정수 형태(원-핫 인코딩하지 않고 정수 형태)로 출력됩니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.