#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:]