Tensorflow EPOCH, как получить информацию - PullRequest
0 голосов
/ 11 февраля 2020

Так что, если я запускаю свой код tenorflow 2.0 через пользовательский интерфейс python, я вижу, как эпохи распечатываются в командной строке. Как я могу 'получить или получить доступ' к этой информации (предпочтительно во время ее работы), чтобы я мог поместить строку в текстовое поле.

Я знаю, что именно делает вывод

model.fit(......)

Я использую pyqt5 для моего GUI и хотел бы установить для текста текстового поля то, что показывает model.fit (желательно во время его работы), чтобы вывод в командную строку и мое текстовое поле были одинаковыми.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

Чтобы получить доступ к потере в каждую эпоху, вы можете использовать history = model.fit(...) вместо model.fit(...). Это сохраняет информацию о потерях в каждую эпоху в объекте keras.callbacks.callbacks.History, где потери могут быть найдены и распечатаны. Кроме того, вы можете добавить дополнительную информацию в историю с помощью keras.callbacks.callbacks, вот некоторая документация для справки: https://keras.io/callbacks/

Вот что вы можете сделать, чтобы напечатать потери в каждой эпохе:

history = model.fit(...)
loss_history = history.history["loss"] #type is list
for i in range(len(loss_history)):
    print("Epoch %i :"%i, loss_history[i])
0 голосов
/ 11 февраля 2020

Основная идея состоит в том, чтобы получить доступ к потерям во время обучения, а не только в конце обучения. Что делать, если вы тренируетесь в течение 200 эпох и 5 часов в неделю? Ответ выше является подходящим, при условии, что программист хочет проверить только в конце обучения, а не в конце каждой эпохи во время обучения.

Следующие строки решат эту проблему:

class LossHistoryCallback(tf.keras.callbacks.Callback):

  def on_epoch_end(self, batch, logs=None):
    #logs['loss'] or logs['val_loss'] (the latter available only if you use validation data when model.fit()
    # Use logs['loss'] or logs['val_loss'] for pyqt5 purposes

    print('Loss is: logs['loss'], validation loss is: logs['val_loss']')





model.fit(x_train, y_train,
          batch_size=64,
          epochs=10,
          steps_per_epoch=5,
          verbose=1,
          callbacks=[LossHistoryCallback()])

Таким образом, вы можете получить выходные данные о вашей потере и validation_loss в конце каждой эпохи, а не только в конце вашей тренировки, так как вы хотите отслеживать прогресс тренировки в каждой эпохе, а не чтобы увидеть результат только в конце.

...