2016-10-15 1 views
5

Я хотел бы создать пользовательскую функцию потерь, которая имеет срок веса, который обновляется на основе того, что эпоха я вКак создать функцию потерь, которая изменяется в течение эпохи в 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 функции потерь?

ответ

0

В своей документации упоминается, что вы можете использовать символические функции anano/Tf, которые возвращают скаляр для каждой точки данных. Так что вы могли бы сделать что-то вроде этого

loss = tf.contrib.losses.softmax_cross_entropy(x, x_pred) * 
     (beta * current_epoch/20) + 
     tf.contrib.losses.mean_squared_error 

Вы должны пройти й и x_pred, как х и x_pred, как tf.placeholders я думаю, что для создания модели можно использовать keras, но затем снова вы должны запустить вычислительный граф с sess.run()

Литература: https://blog.keras.io/keras-as-a-simplified-interface-to-tensorflow-tutorial.html#using-keras-models-with-tensorflow

Смежные вопросы