Как совместить множественные потери и точность во время тренировок в Керасе? - PullRequest
0 голосов
/ 20 февраля 2020

Что касается вопроса , во время обучения я получаю многократные потери и неточности. Например,

Epoch 1/100
1382/1382 [==============================] - 694s 502ms/step - loss: 0.6798 - decoder_loss: 0.3399 - decoder_accuracy: 0.5770 - decoder_accuracy_1: 0.5770 - val_loss: 0.6606 - val_decoder_loss: 0.3373 - val_decoder_accuracy: 0.5783 - val_decoder_accuracy_1: 0.5783

Трудно понять, и мне нужны только потери, точность, validation_loss и validation_accuracy. Есть ли способ объединить их.

Другое дело, что мой файл журнала становится все больше и больше, так как сеть печатает потерю / точность после каждого шага следующим образом:

1/1382 [..............................] - ETA: 13:59 - loss: 0.7226 - decoder_loss: 0.3613 - decoder_accuracy: 0.5536 - decoder_accuracy_1: 0.5536
2/1382 [..............................] - ETA: 10:23 - loss: 0.7204 - decoder_loss: 0.3602 - decoder_accuracy: 0.5881 - decoder_accuracy_1: 0.5881
3/1382 [..............................] - ETA: 8:57 - loss: 0.7151 - decoder_loss: 0.3576 - decoder_accuracy: 0.5821 - decoder_accuracy_1: 0.5821 

Могу ли я уменьшить его на вывод только после окончания эпохи вместо каждого шага?

1 Ответ

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

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

model.fit(Xtrain, Ytrain, batch_size = 32, epochs = 100, verbose=1)

Вы можете изменить многословие на 2, тогда вы получите только один выход за эпоху. В качестве альтернативы вы можете отключить вывод прогресса тренировки, если вы установите подробное значение 0. (Источник: Keras API ) Например,

model.fit(Xtrain, Ytrain, batch_size = 32, epochs = 5, verbose=2)

Должен дать вам вывод, подобный: enter image description here

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

EDIT1: Что касается вашего вопроса, можете ли вы повлиять на показатели мониторинга: Да, вы можете, но я могу только ответить на ваш вопрос с предположениями, потому что у меня нет вашего кода. Если вы используете керас для своей модели, вы должны были где-то использовать функцию «компилировать» керас. Например,

model.compile(optimizer=keras.optimizers.RMSprop(),  # Optimizer
          # Loss function to minimize
          loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
          # List of metrics to monitor
          metrics=["accuracy"])

. Вы можете влиять на показатели, которые отображаются на вашей консоли, если вы измените значения показателей на значения, которые хотите видеть. (Источник: Kearas API , Keras Metrics )

Если вы хотите видеть только loss, accuracy, вы можете использовать приведенный выше пример. Метрики val_... будут сгенерированы соответствующим образом, если вы используете валидацию _split или validation_datat в функции fit. Например,

history = model.fit(x_train, y_train,
                batch_size=64,
                epochs=3,
                # We pass some validation for
                # monitoring validation loss and metrics
                # at the end of each epoch
                validation_data=(x_val, y_val))

Если построить два примера, чтобы визуализировать мою точку зрения Пример 1 показывает accuracy, loss, val_acc и val_loss Example 1 Пример 2 показывает accuracy, loss,mae, val_acc, val_loss и val_mae Example 2

Для полноты здесь ссылка на блокнот colab, где вы можете увидеть мой код: Colab для примеров

Надеюсь, это поможет решите свой вопрос полностью. Если нет, дайте мне знать.

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