Как контролировать исчезновение градиента и взрыв в керасе с помощью тензорной доски?


Я хотел бы отслеживать изменения градиента в тензорной доске с керасом, чтобы решить, исчезнет ли градиент или произойдет взрыв. Что же мне делать?

1 2

1 ответ:

Чтобы визуализировать обучение на тензорной доске, добавьте keras.callbacks.TensorBoard обратный вызов функции model.fit. Не забудьте установить write_grads=True, чтобы увидеть градиенты там. Сразу после начала тренировки вы можете бежать...

tensorboard --logdir=/full_path_to_your_logs

... из командной строки и наведите браузер на htttp://localhost:6006. Смотрите пример кода в этот вопрос .

Чтобы проверить наличие исчезающих / взрывающихся градиентов, обратите внимание на распределение градиентов и абсолютные значения в интересующем слое ("распределения" tab):

  • Если распределение сильно пиковое и сосредоточено вокруг 0, градиенты, вероятно, исчезают. Вот конкретный пример того, как это выглядит на практике.
  • Если распределение быстро растет в абсолютном значении со временем, градиенты взрываются. Часто выходные значения на одном и том же слое также очень быстро становятся NaNs.