Как справиться с NaN и 0 для потери и проверки во время обучения

#conv-neural-network #object-detection #pre-trained-model #chainercv

#conv-neural-network #обнаружение объекта #предварительно обученная модель #chainercv

Вопрос:

Я использую SSD512 (предварительно обученная модель imagenet) и Faster_R-CNN (предварительно обученная) во время обучения потери и достоверность отображают nan и проверку как 0.

[Баскетбол-ChainerCV] (https://github.com/atom2k17/Basketball-ChainerCV/blob/master/basketballproject.py ).

Это изображение для обучения SSD300 ниже: Ссылка на изображение для обучения SSD512

При ускоренном обучении R-CNN перед началом обучения перед результатом первого набора эпох отображается следующее:

 /usr/local/lib/python3.6/dist- 
packages/chainercv/links/model/faster_rcnn/utils/loc2bbox.py:65: 
RuntimeWarning: overflow encountered in exp
  h = xp.exp(dh) * src_height[:, xp.newaxis]
/usr/local/lib/python3.6/dist- 
packages/chainercv/links/model/faster_rcnn/utils/loc2bbox.py:65: 
RuntimeWarning: overflow encountered in multiply
  h = xp.exp(dh) * src_height[:, xp.newaxis]
/usr/local/lib/python3.6/dist- 
packages/chainercv/links/model/faster_rcnn/utils/loc2bbox.py:66: 
RuntimeWarning: overflow encountered in exp
  w = xp.exp(dw) * src_width[:, xp.newaxis]
/usr/local/lib/python3.6/dist- 
packages/chainercv/links/model/faster_rcnn/utils/loc2bbox.py:66: 
RuntimeWarning: overflow encountered in multiply
  w = xp.exp(dw) * src_width[:, xp.newaxis]
/usr/local/lib/python3.6/dist- 
packages/chainercv/links/model/faster_rcnn/utils/proposal_creator.py:126: 
RuntimeWarning: invalid value encountered in greater_equal 
  

Faster_R-ссылка на обучающее изображение CNN

Вещи, которые я пробовал:

  1. Увеличение скорости обучения
  2. Уменьшение размера пакета
  3. Удалены изображения, аннотации и содержимое в текстовых файлах, которые содержат изображения, где ограничивающая рамка составляет менее 1% от общего размера изображения

Примечание: С SSD300 все работает отлично, проблемы возникают с SSD512 и более быстрыми моделями RCNN. Все модели предварительно обучены в наборе данных ImageNet.

В чем проблема, стоящая за проблемой? Кто-нибудь может дать указания о том, как справляться с такими проблемами?

Комментарии:

1. Можете ли вы попробовать уменьшить скорость обучения. увеличение скорости обучения делает обучение нестабильным. Я думаю, вы даже можете попробовать установить скорость обучения на 0. И если nan обнаруживается даже в таком случае, это может быть потому, что входные данные неправильно предварительно обработаны и их масштаб отличается от ожидаемого.

2. Установка скорости обучения на 0 решает проблему nan, но даже после 60 эпох основная потеря, loc_loss, conf_loss и проверка отображают то же значение, что и в первую эпоху … т. е. значение меняется незначительно. Возможно, модель не обучается?… что можно сделать, чтобы преодолеть это препятствие?

3. @corochann 2 момента, которые я хотел упомянуть: я использовал те же данные с моделью ssd300, которая работала правильно. Итак, я думаю, что данные предварительно обработаны правильно. Когда дело доходит до масштабирования, оно следует соглашению ChainerCV (y_min, x_min, y_max, x_max).

4. каков ваш текущий размер пакета и размер пакета в официальном примере? Если BatchNormalization находится внутри сети, слишком маленький размер пакета делает обучение нестабильным.

5. Установка скорости обучения на 0 предназначена только для отладки (чтобы увидеть, содержит ли ввод nan или нет), модель ничего не изучает, когда скорость обучения равна 0. Вы можете установить небольшое значение (0.01 или 0.001 или 0.0001) для модели для обучения.