Потеря валидации отскакивает случайным образом при обучении модели Keras независимо от используемого оптимизатора

Я переучиваю модель InceptionV3 на 200 изображениях и использую оптимизатор Adam:

opt = Adam(lr=0.0001, decay=0.0001 / 100)

Я заметил, что потеря отскакивает специально от проверки. Я думал, что это связано со скоростью обучения, как я видел в некоторых ответах, таких как Передача обучения - Val_loss странное поведение, а также Почему в сверточной нейронной сети могут быть низкие потери, но также очень низкая точность? они не помогли.

поэтому я использовал RMSprop, но у меня было такое же поведение. Вот как выглядит перформанс:

введите описание изображения здесь

Есть предложения, почему я испытываю это и как с этим справиться?


person owise    schedule 04.04.2020    source источник


Ответы (1)


Глядя на ваши графики, я не думаю, что сеть действительно чему-то учится.

Предлагаю вам изучить следующее:

  1. Есть ли в изображениях какие-либо 0-значные входные данные.

  2. Градиенты слишком велики или слишком малы.

  3. Почти постоянны градиенты для нескольких партий.

  4. Одинаковы ли масштабы всех изображений.

  5. Правильно ли закодированы классы как горячие векторы.

person Susmit Agrawal    schedule 04.04.2020
comment
что вы имеете в виду 0'ed input в изображениях? Как получить доступ к градиентам после обучения из истории Кераса? Да, все изображения масштабируются одинаково Да, они правильно кодируются - person owise; 04.04.2020
comment
Иногда, если файл изображения поврежден, ваш конвейер может просто передать массив нулей в сеть. Это зависит от реализации конвейера. - person Susmit Agrawal; 04.04.2020
comment
Что касается градиентов, предлагаю перейти на tf.GradientTape() - person Susmit Agrawal; 04.04.2020