Как мне вызвать глобальную переменную в пользовательской функции потерь keras, чтобы изменить возвращаемое значение функции потерь

#python-3.x #tensorflow #keras

#python-3.x #tensorflow #keras

Вопрос:

Я хочу определить функцию потерь, и потеря y_true — это то, что я не собираюсь использовать, но что я собираюсь получить из внешней глобальной переменной.Я обнаружил, что после того, как я передал определенную функцию потерь в компиляцию модели, она была вызвана только один раз.Я думал, что он собирается вызвать batch_size один раз.Потому что я добавил печать в свою пользовательскую функцию потерь, но она печаталась только один раз.Итак, я хочу знать, сколько раз вызывается пользовательская функция потерь.

 def my_loss(y_true, y_pred):

    global loss_count
    loss_count  = 1
    print("the loss",loss_count)
    return keras.losses.categorical_crossentropy(y_true, y_pred)
  

После обучения модели количество потерь переменной равно 1

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

1. Вызывается только один раз

2. Вы имеете в виду, что нет способа вызвать ее несколько раз?

3. Я думаю, что функция вызывается один раз, когда она создает операции, а затем сеанс итеративно оценивает потери. Не уверен!! Здесь я немного догадываюсь.

4. @Anakin То, что вы говорите, абсолютно правильно.