Я использую Keras для одного из моих экспериментов. Когда я использую метод fit_generator
я могу указать обратные вызовы, чтобы я мог реализовать их после каждой партии или эпохи.
Теперь, используя valid_generator для проверки, я делаю следующее,
Одна из некоторых других показателей, как показано ниже,
def accuracy(y_true, y_pred):
return K.mean(K.equal(y_true, K.round(y_pred)))
Оценка,
metrics = model.evaluate_generator(my_generator(...),
steps=steps,
use_multiprocessing=True)
Здесь my_generator()
yield
один вход (здесь размер партии равен 1). Кроме того, у меня есть несколько типов потерь, определенных в модели. Я получаю все эти потери отлично.
Но проблема в том, что я получаю только одну оценочную метрику. Я думаю, что это общая метрика, учитывая, что все отдельные партии являются одним целым вкладом.
Как я могу определить обратный вызов или что-то в этом роде, чтобы я мог выполнять свои собственные вычисления в рамках отдельных оценок партии? (например, обратный вызов fit_generator).
Примечание. evaluate_generator
valu_generator не поддерживает обратные вызовы.
Я думаю, что вы ищете обратный вызов лямбда https://keras.io/callbacks/#lambdacallback
Также возможно использовать полный пользовательский обратный вызов. Пример из документации keras:
class LossHistory(keras.callbacks.Callback):
def on_train_begin(self, logs={}):
self.losses = []
def on_batch_end(self, batch, logs={}):
self.losses.append(logs.get('loss'))