Метрики log keras для каждой партии (как в примере с keras для потери) - PullRequest
1 голос
/ 29 мая 2019

В документе keras есть пример , где создается специальный обратный вызов для регистрации потерь для каждого пакета. Это хорошо сработало для меня, однако я также хочу регистрировать метрики, которые я добавляю.

Например, для этого кода:

optimizer = Adam()
loss = losses.categorical_crossentropy
metric = ["accuracy"]

model.compile(optimizer=optimizer,
              loss=loss,
              metrics=metric)


class LossHistory(Callback):
    def on_train_begin(self, logs={}):
        self.losses = []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))

loss_history = LossHistory()

history = model.fit(training_data, training_labels,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=2,
                    validation_data=(val_data, val_labels),
                    callbacks=[loss_history])

Не могу понять, как получить доступ к метрикам

1 Ответ

1 голос
/ 29 мая 2019

История метрик хранится внутри loss_history.losses:

def on_batch_end(self, batch, logs={}):
  self.losses.append(logs.get('loss'))

Этот метод вызывается в конце каждого пакета и просто добавляет метрики потерь в self.losses, поэтому после завершения обучения вы можете просто получить доступ к этому списку напрямую с помощью loss_history.losses.

Я должен также добавить, что, если вы хотите, например, включить точность, вы также можете сделать что-то вроде:

class LossHistory(Callback):
    def on_train_begin(self, logs={}):
        self.losses = []
        self.accuracy= []

    def on_batch_end(self, batch, logs={}):
        self.losses.append(logs.get('loss'))
        self.accuracy.append(logs.get('accuracy'))

, а затем получить к нему доступ:

loss_history.accuracy

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...