Обнаруживает ли pytorch переполнение или недостаточный поток?

#pytorch

#pytorch

Вопрос:

Поскольку глубокая нейронная сеть и RNN предполагают многократное умножение, я полагаю, переполнение или недостаточный поток будут частыми.

Мне просто любопытно, обнаруживает ли библиотека глубокого обучения операцию переполнения или переполнения и показывает ли какое-либо предупреждающее сообщение или просто игнорирует его.

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

1. вы имеете в виду исчезающие / взрывающиеся градиенты?

2. да, точно. о, после того, как я это услышал, я кое-что понял.

Ответ №1:

Вы можете отслеживать проблемы, связанные с исчезающими / расширяющимися градиентами, отслеживая, как меняется ваш градиент с течением времени. Хотя этот подход в большей степени ориентирован на обнаружение взрывающихся градиентов, чем исчезающих градиентов.

Одним из способов было бы посмотреть на значение наибольшего градиента:

 max(p.grad.detach().abs().max() for p in model.parameters() if p.grad is not None)
 

Или, взглянув на норму всех сложенных параметров (рассматривая его как единый тензор).

Это два подхода, используемые torch.nn.utils.clip_grad_norm_ для определения того, нужно ли обрезать градиент: вот фактические строки в исходном коде.