
388
2
부
신경망과 딥러닝
보조 출력을 추가하는 것은 매우 쉽습니다. 적절한 층에 연결하고 모델의 출력 리스트에 추가
하면 됩니다. 예를 들면 다음 코드는 [그림
10
-
16
]의 네트워크를 만듭니다.
[...]
# 출력층까지는 이전과 동일합니다.
output = keras.layers.Dense(1, name="main_output")(concat)
aux_output = keras.layers.Dense(1, name="aux_output")(hidden2)
model = keras.Model(inputs=[input_A, input_B], outputs=[output, aux_output])
각 출력은 자신만의 손실 함수가 필요합니다. 따라서 모델을 컴파일할 때 손실의 리스트
46
를
전달해야 합니다 (하나의 손실을 전달하면 케라스는 모든 출력의 손실 함수가 동일하다고 가정
합니다 ). 기본적으로 케라스는 나열된 손실을 모두 더하여 최종 손실을 구해 훈련에 사용합니
다. 보조 출력보다 주 출력에 더 관심이 많다면 (보조 출력은 규제로만 사용되므로 ), 주 출력의
손실에 더 많은 가중치를 부여해야 합니다. 다행히 모델을 컴파일할 때 손실 가중치를 지정할
수 있습니다.
model.compile(loss=["mse", "mse"], loss_weights=[0.9,