#python #machine-learning #keras
#python #машинное обучение #keras
Вопрос:
Я хотел бы создать пользовательскую функцию потерь, которая имеет весовой член, который обновляется в зависимости от того, в какой эпохе я нахожусь.
Например: допустим, у меня есть функция потерь, которая имеет beta
вес, где бета увеличивается в течение первых 20 эпох…
def custom_loss(x, x_pred):
loss1 = objectives.binary_crossentropy(x, x_pred)
loss2 = objectives.mse(x, x_pred)
return (beta*current_epoch/20) * loss1 loss2
Как я мог бы реализовать что-то подобное в функции потерь keras?
Ответ №1:
Просматривая их документацию, они упоминают, что вы можете использовать символьные функции theano / Tf, которые возвращают скаляр для каждой точки данных. Итак, вы могли бы сделать что-то вроде этого
loss = tf.contrib.losses.softmax_cross_entropy(x, x_pred) *
(beta * current_epoch / 20 )
tf.contrib.losses.mean_squared_error
Вам нужно будет передать x и x_pred как x и x_pred как tf.заполнители
Я думаю, что для создания модели вы могли бы использовать keras, но опять же вам придется запускать вычислительный график с помощью sess.run()