Я относительно новичок в нейронных сетях, но я тренировался с мульти-выходом net, который дает мне два выхода. Я использую Keras и взвесил мои значения потерь на выходе в 0.2 для num_loss
и 1. для output_loss
.
Когда я тренировался, я видел, что общие потери будут увеличиваться, несмотря на то, что уменьшаются как индивидуальные потери, с выходом одной эпохи:
val_loss: 1.0926 - val_num_loss: 0.3285 - val_output_loss: 1.1055 - val_num_accuracy: 0.8501 - val_output_accuracy: 0.5036
, а эпохой после этого будет:
val_loss: 1.1662 - val_num_loss: 0.3036 - val_output_loss: 1.0861 - val_num_accuracy: 0.8655 - val_output_accuracy: 0.5202
(я не включил вывод обучающего набора, поскольку он не показался уместным, поскольку он не страдает от той же проблемы)
То же самое произошло снова, через несколько эпох, но где общие потери уменьшились, несмотря на увеличение потерь обоих отдельных атрибутов:
val_loss: 1.1662 - val_num_loss: 0.3036 - val_output_loss: 1.0861 - val_num_accuracy: 0.8655 - val_output_accuracy: 0.5202
val_loss: 1.0745 - val_num_loss: 0.3151 - val_output_loss: 1.1212 - val_num_accuracy: 0.8612 - val_output_accuracy: 0.5165
Вероятно, стоит упомянуть, что вывод num_loss
не является полностью отдельной ветвью. Он отделяется от основной части, выдает свой вывод и затем возвращает свой результат обратно в основную часть net.