Валидационные потери намного выше, чем тренировочные потери во время тренировок под собственным контролем - PullRequest
0 голосов
/ 07 февраля 2020

Я создал собственную модель FCNN, создав подкласс keras.Model. Эта модель использует пользовательские tf-операции и слои keras, которые я сделал, но не имеет никаких выпадающих слоев, что могло бы вызвать другое поведение во время обучения и проверки соответственно.

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

Я тренирую две модели параллельно на одних и тех же входах, одна моя, а другая Deeplabv3 +, которая реализуется определяя модель как функцию, а не мою подклассу проверки и никогда не видит одни и те же данные дважды, как проверки. И вот проблема: для функциональной модели Deeplabv3 + это так, а для моей это совсем не так. Deeplabv3 + имеет потерю обучения 0,14 и потерю проверки 0,15, в то время как моя модель имеет потерю обучения 0,06 и потерю проверки 0,5.

Учитывая процедуру обучения, я не могу объяснить, как такая плохая ошибка проверки возможно, поэтому я подозреваю, что tf или keras как-то нарушают состояние модели во время проверки, поэтому мои вопросы:

  1. Существуют ли другие слои или функции в tf.keras, кроме Dropout которые ведут себя иначе во время валидации, чем во время обучения?

  2. Что керасы делают с модельным состоянием после этапа обучения эпохи, которое может вызвать такое поведение?

  3. Есть ли что-то, что я должен учитывать в этом отношении при создании подкласса keras.Model? В прошлом у меня были проблемы, такие как невозможность правильно сохранять и загружать веса при вложении моделей или не давать правильные имена слоям. Может ли это быть что-то связанное с этим?

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