Spec-Zone.ru › PyTorch 2.14

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

Тип возвращаемого значения:

bool

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API