Потеря NaN в модели керас - PullRequest
1 голос
/ 19 мая 2019

У меня есть около 100 тыс. «Пакетов данных» последовательных данных, на которых я использую довольно сложную рекуррентную модель (120 тыс. Параметров). Через некоторое время (которое кажется довольно случайным) потеря превращается в нан. Я попробовал следующее

  1. проверил данные на нечисловые значения, которые оказались хорошими
  2. Градиент обрезается до нормы 1
  3. Ограничены параметры каждого слоя,
  4. Понизил скорость обучения и добавил эпсилон в RMSProp, однако я все еще получаю NaN после определенного момента.

Что-нибудь еще, что я могу попытаться отладить?

Ответы [ 2 ]

1 голос
/ 19 мая 2019

Без кода я могу дать только очень общий ответ:

NaN может произойти, когда вы:

  • Разделить на 0
  • Логарифм слишком малых чисел
  • sqrt чего-то отрицательного

Посмотрите на показатель оптимизации, чтобы увидеть, что может произойти в вашем случае. Ищите точки, где (абсолютные) числа могут стать очень большими или очень маленькими. Часто добавление небольшой константы решает проблему.

Есть много других случаев, которые, вероятно, не имеют отношения к вам:

  • Арксин за пределами [-1, 1]
  • float ('inf') / float ('inf')
  • 0 * float ('inf')

См. Также: Мое руководство по отладке нейронных сетей

0 голосов
/ 19 мая 2019

Я не пользуюсь рекуррентными сетями, однако я столкнулся со спорадической проблемой NaN в моей собственной работе с CNN, когда размеры пакетов обучения малы.Попробуйте увеличить размер вашей партии.

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