Численная проверка градиента в PyTorch
Численная сверка проверяет,
совпадает ли аналитический
градиент с эталоном. Функция
gradcheck сравнивает
градиент, который даёт автоград,
с приближением через малые
сдвиги аргумента. Для устойчивости
аргумент берут в типе
float64, а не в
float32.
Проверим простой квадрат на дробном тензоре двойной точности:
import torch
def square(x):
return x * x
inp = torch.tensor(2.0, dtype=torch.float64,
requires_grad=True)
ok = torch.autograd.gradcheck(square, inp)
print(ok) # выведет True
Истинный ответ означает, что обратный шаг для такой формулы согласован с численным эталоном на заданной точке.
Задайте функцию, возвращающую
удвоенный аргумент. Проверьте
её на 1.0 в двойной
точности с записью градиента
и выведите результат проверки.
Для функции «куб аргумента»
создайте вход 0.5
в float64 с записью
и выведите, прошла ли
численная сверка.
Сложите аргумент с константой
3.0 в функции из одного
входа, проверьте градиент
на 2.0 двойной точности
и выведите логический итог
проверки.