Если я вас правильно понимаю, то, что вы просите, нелегко достичь (и, возможно, не то, что вам нужно).
Сделав шаг назад, тренировочный шаг в модели керас примерно равен:
predictions = model(train_x)
loss = some_loss_function(true_labels, predictions)
do_backprop_etc_to_update_model_in_order_to_minimize_loss(loss_operations)
keras & tf (умно) скрывает большую часть реализации 3-го из этих шагов (что я сильно упрощенно), но, тем не менее, это происходит и лежит в основе обучения keras / tf.
Это означает, что если у вас есть убыток от model1
, то он не может быть разумно передан в model2
без включения операций из model1
внутри model2
(что фактически аналогично model3
, который делает все - включая оба выхода. Это, я ожидаю, то, что вы действительно хотите?)
Если вместо архитектуры, которую вы описали, вы выбираете одну модель, то у вас может быть 2 отдельных выхода, каждый с собственной функцией потерь. Кроме того, ваша вторая функция потерь может быть настолько сложной, насколько вам нравится (например, может включать вычисление первой функции потерь).
Архитектура, подобная этой, может быть примером:
inputs = Input(shape=(17,))
dense1 = Dense(32, activation='relu')(inputs)
dense2 = Dense(18, activation='relu')(dense1)
dense3 = Dense(7, activation='relu')(dense2)
out1 = Softmax()(dense3)
out2 = Dense(1, activation='sigmoid')(dense2)
model = Model(inputs=inputs, outputs=[out1,out2])
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_2 (InputLayer) [(None, 17)] 0
__________________________________________________________________________________________________
dense_3 (Dense) (None, 32) 576 input_2[0][0]
__________________________________________________________________________________________________
dense_4 (Dense) (None, 18) 594 dense_3[0][0]
__________________________________________________________________________________________________
dense_5 (Dense) (None, 7) 133 dense_4[0][0]
__________________________________________________________________________________________________
softmax_1 (Softmax) (None, 7) 0 dense_5[0][0]
__________________________________________________________________________________________________
dense_6 (Dense) (None, 1) 19 dense_4[0][0]
==================================================================================================
Total params: 1,322
Trainable params: 1,322
Non-trainable params: 0