Keras: Как разделить y_pred и y_true на три

#python #keras #deep-learning

#python #keras #глубокое обучение

Вопрос:

Я использую Keras и хочу использовать пользовательскую функцию потерь

я пытаюсь разделить y_pred и y_true на три части, длина каждой части составляет 1/3 от исходной длины

это мой код, но возвращает ошибку (потеря «nan»):

 def create_loss_function_custom(len_train):
            tier_1 = int(len_train/3)
            tier_2 = int(len_train*2/3)
            def loss_function_custom(y_true, y_pred):
                y_pred_1 = y_pred[:, :tier_1]
                y_pred_2 = y_pred[:, tier_1:tier_2]
                y_pred_3 = y_pred[:, tier_2:]

                y_true_1 = y_true[:, :tier_1]
                y_true_2 = y_true[:, tier_1:tier_2]
                y_true_3 = y_true[:, tier_2:]

                loss_1= K.mean(K.binary_crossentropy(y_true_1,y_pred_1))
                loss_2 = K.mean(K.binary_crossentropy(y_true_2,y_pred_2))
                loss_3 = K.mean(K.binary_crossentropy(y_true_3, y_pred_3))


                return K.max([loss_1,loss_2,loss_3])
            return loss_function_custom
 

Как это сделать?

я использую серверную часть theano

Комментарии:

1. Какое сообщение об ошибке?

2. это возвращает потерю «nan»

3.Похоже, вы используете неправильное измерение. Обычно первым измерением является индекс выборки, поэтому вы, вероятно, захотите сделать : y_pred_1 = y_pred[:tier_1] y_pred_2 = y_pred[tier_1:tier_2] y_pred_3 = y_pred[tier_2:]