Создание пользовательской функции потерь в tf.keras - PullRequest
1 голос
/ 15 июня 2019

Я изучаю различные функции потери, используемые в глубоком обучении.Мне нужна была помощь в реализации пользовательской функции потерь в tenorflow.Чтобы получить конкретную картину этого, я хотел бы реализовать в качестве примера потерю Binary Cross Entropy.

Большое спасибо за помощьномер через некоторое время.Я попытался добавить небольшое количество в функцию журнала.Кроме того, я изменил оптимизатор на Адама.

1 Ответ

1 голос
/ 16 июня 2019

Я думаю, что это проблема с числовыми вычислениями всякий раз, когда y_pred == 0.

Обратите внимание, что log(0) не определено, поэтому, чтобы сделать наши расчеты потерь численно стабильными, мы склонны делать tf.log(y_pred + epsilon), гдеepsilon - это очень небольшое число, которое будет иметь незначительное влияние на потерю, но не будет возвращать NaN при попытке деления на ноль (или делать log (0)).

Я предполагаю, что это то, что выстремились к параметру eps, но вы должны поместить его в вызов tf.log().

Возможно, что-то вроде этого:

def custom_loss(eps):
    def loss(y_true, y_pred):
        ans = -(y_true*tf.log(y_pred + eps) + (1-y_true)*tf.log(y_pred + eps))
        return ans
    return loss
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...