torch.autograd.gradcheck.gradcheck
-
torch.autograd.gradcheck.gradcheck(func, inputs, *, eps=1e-06, atol=1e-05, rtol=0.001, raise_exception=True, nondet_tol=0.0, check_undefined_grad=True, check_grad_dtypes=False, check_batched_grad=False, check_batched_forward_grad=False, check_forward_ad=False, check_backward_ad=True, fast_mode=False, masked=None)[исходный код] -
Проверяет градиенты, вычисленные с помощью малых конечных разностей, сравнивая их с аналитическими градиентами по тензорам в
inputs, имеющим тип с плавающей точкой или комплексный тип, а такжеrequires_grad=True.Для проверки соответствия численных и аналитических градиентов используется
allclose().Для большинства комплексных функций, которые мы рассматриваем с целью оптимизации, понятие якобиана не определено. Вместо этого gradcheck проверяет согласованность численных и аналитических значений производных Виртингера и сопряжённых производных Виртингера. Поскольку градиенты вычисляются исходя из предположения, что функция в целом имеет вещественное значение на выходе, функции с комплексным выходом обрабатываются особым образом. Для таких функций gradcheck применяется к двум вещественнозначным функциям: первая соответствует взятию вещественных компонент комплексных выходов, а вторая — взятию мнимых компонент комплексных выходов. Подробнее см. в разделе Автоград для комплексных чисел.
Примечание
Значения по умолчанию рассчитаны на
inputдвойной точности. Эта проверка, скорее всего, завершится неудачей, еслиinputимеет меньшую точность, напримерFloatTensor.Примечание
Проверка gradcheck может завершиться неудачей в недифференцируемых точках, поскольку градиенты, вычисленные численно методом конечных разностей, могут отличаться от вычисленных аналитически (не обязательно из-за ошибочности одного из способов). Подробнее см. в разделе Градиенты недифференцируемых функций.
Предупреждение
Если какой-либо проверяемый тензор в
inputимеет перекрывающуюся память, то есть разные индексы указывают на один и тот же адрес памяти (например, в результате вызоваtorch.Tensor.expand()), эта проверка, скорее всего, завершится неудачей, поскольку численные градиенты, вычисленные путём возмущения таких индексов, изменят значения всех остальных индексов, использующих тот же адрес памяти.- Параметры:
-
- func (функция) – функция Python, которая принимает тензоры на вход и возвращает тензор или кортеж тензоров
- inputs (кортеж из Tensor или Tensor) – входные данные функции
- eps (float, необязательно) – величина возмущения для конечных разностей
- atol (float, необязательно) – абсолютный допуск
- rtol (float, необязательно) – относительный допуск
- raise_exception (bool, необязательно) – указывает, следует ли вызывать исключение, если проверка завершилась неудачей. Исключение содержит подробную информацию о точном характере сбоя. Это полезно при отладке проверок gradcheck.
- nondet_tol (float, необязательно) – допуск для недетерминизма. При выполнении дифференцирования с одинаковыми входными данными результаты должны либо точно совпадать (по умолчанию 0.0), либо укладываться в этот допуск.
-
check_undefined_grad (bool, необязательно) – если
True, проверяет, поддерживаются ли неопределённые выходные градиенты и обрабатываются ли они как нули, для выходовTensor. -
check_batched_grad (bool, необязательно) – если
True, проверяет, можно ли вычислять пакетные градиенты с использованием экспериментальной поддержки vmap. По умолчанию False. -
check_batched_forward_grad (bool, необязательно) – если
True, проверяет, можно ли вычислять пакетные градиенты прямого прохода с использованием прямого AD и экспериментальной поддержки vmap. По умолчаниюFalse. -
check_forward_ad (bool, необязательно) – если
True, проверяет, совпадают ли градиенты, вычисленные с помощью AD в прямом режиме, с численными градиентами. По умолчаниюFalse. -
check_backward_ad (bool, необязательно) – если
False, не выполняет проверки, требующие реализации AD в обратном режиме. По умолчаниюTrue. - fast_mode (bool, необязательно) – быстрый режим для gradcheck и gradgradcheck реализован только для функций R в R. Если ни один из входов и выходов не является комплексным, выполняется более быстрая реализация gradcheck, которая не вычисляет весь якобиан; в противном случае используется медленная реализация.
-
masked (bool, необязательно) – если
True, градиенты неопределённых элементов разреженных тензоров игнорируются. По умолчаниюFalse.
- Возвращает:
-
True, если все различия удовлетворяют условию allclose - Тип возвращаемого значения:
© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.autograd.gradcheck.gradcheck.html