Да, это возможно, для этого вам нужно использовать класс, который был недавно добавлен в Keras: keras.metrics.Metric
. С его помощью вы можете реализовать метрику с состоянием c и накапливать результаты по партиям (даже накапливать результаты для каждой партии), а затем вычислять конечный результат.
Для этого вам необходимо создать подкласс keras.metrics.Metric
и реализуйте следующие методы:
update_state
: обновляет состояние metri c, здесь вы в основном накапливаете результаты для каждой партии. Вы можете использовать self.add_weight
для получения обновляемых переменных, если вы используете другой метод для определения своего состояния, вы также должны реализовать reset_states
. result
: вычислить и вернуть заданный конечный показатель c все результаты для каждой партии.
Затем вы создаете экземпляр своей метри c и передаете его в model.compile
. Есть много примеров метрик, реализованных с использованием этой структуры здесь .