Понимание потери в модели tf kerasPython

Программы на Python
Ответить
Anonymous
 Понимание потери в модели tf keras

Сообщение Anonymous »

Я пытаюсь воспроизвести потери, о которых сообщалось после обучения модели tf.keras. Насколько я понимаю, History.history['loss'] должен возвращать средние потери за эпоху после вызова model.fit. Однако, похоже, это не соответствует моим ожиданиям.
Вот фрагмент кода:

Код: Выделить всё

history = model.fit(X, y, batch_size=32, shuffle=True, epochs=1, verbose=1)

Output: 4050/4050 ━━━━━━━━━━━━━━━━━━━━ 66s 13ms/step - loss: 290.9271

print(history.history)    # Output: {'loss': [56.9575309753418]}
Я создал собственный обратный вызов для сбора потерь из каждой партии:

Код: Выделить всё

batch_losses = []
collect_losses = LambdaCallback(on_batch_end=lambda batch, logs: batch_losses.append(logs['loss']))
model.fit(X, y, batch_size=32, shuffle=True, epochs=1, verbose=1, callbacks=[collect_losses])
batch_losses_array = np.array(batch_losses, dtype=np.float32)
Вот результаты:

Код: Выделить всё

print(float(np.mean(batch_losses_array)))  # Output: 290.98486328125
print(batch_losses_array[-1])              # Output: 56.95753
Похоже, что History.history['loss'] возвращает потери для последней партии, а не среднее значение за эпоху. Простое среднее значение пакетных потерь очень близко к заявленному значению после обучения, но расхождение все равно существует.
Все мои данные находятся в np.float32. Версия TensorFlow — 2.18.0. Размеры партий одинаковы (32), что означает, что конечная партия не будет меньшего размера; следовательно, средневзвешенное и простое среднее должны быть идентичны.
Мои вопросы:

[*]Является ли History.history[ 'loss'] должен возвращать потери последней партии или средние потери за эпоху?
[*]Как я могу напрямую получить заявленное значение потерь после обучения?
< /ol>
Заранее благодарим за любую информацию!

Подробнее здесь: https://stackoverflow.com/questions/791 ... -model-fit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»