Spec-Zone.ru › PyTorch 2

torch.autograd.gradcheck

torch.autograd.gradcheck(func, inputs, *, eps=1e-06, atol=1e-05, rtol=0.001, raise_exception=True, check_sparse_nnz=None, 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) [source]

Проверка градиентов, вычисленных с помощью небольших конечных разностей, по отношению к аналитическим градиентам по тензорам в inputs, которые являются тензорами с плавающей точкой или комплексным типом и с requires_grad=True.

Проверка между численными и аналитическими градиентами использует allclose().

Для большинства сложных функций, которые мы рассматриваем для оптимизации, понятие якобиана не существует. Вместо этого gradcheck проверяет, совпадают ли числовые и аналитические значения производных Виритера и сопряжённых производных Виритера. Поскольку вычисление градиента выполняется при предположении, что у всей функции есть вещественное значение, мы обрабатываем функции с комплексным выходом особым образом. Для этих функций gradcheck применяется к двум вещественным функциям, соответствующим взятию вещественных компонент комплексных выходов для первой и взятию мнимых компонент комплексных выходов для второй. Для получения более подробной информации обратитесь к Автоматическое дифференцирование для комплексных чисел.

Примечание

Значения по умолчанию предназначены для input двойной точности. Эта проверка, скорее всего, завершится неудачей, если input имеет меньшую точность, например, FloatTensor.

Примечание

Gradcheck может завершиться неудачей при оценке в недифференцируемых точках, поскольку численно вычисленные градиенты с помощью конечных разностей могут отличаться от аналитически вычисленных (не обязательно из-за того, что один из них неверен). Для более детального контекста см. Градиенты для недифференцируемых функций.

Предупреждение

Если какой-либо проверяемый тензор в input имеет перекрывающиеся области памяти, то есть разные индексы указывают на один и тот же адрес памяти (например, из torch.expand()), эта проверка, скорее всего, завершится неудачей, потому что числовые градиенты, вычисленные путём возмущения в таких индексах, изменят значения во всех других индексах, которые делят один и тот же адрес памяти.

Параметры
  • func (функция) – Python-функция, которая принимает тензорные входные данные и возвращает тензор или кортеж тензоров
  • inputs (кортеж из Tensor или Tensor) – входные данные для функции
  • eps (float, необязательно) – возмущение для конечных разностей
  • atol (float, необязательно) – абсолютная погрешность
  • rtol (float, необязательно) – относительная погрешность
  • raise_exception (bool, необязательно) – указывает, нужно ли вызывать исключение, если проверка завершится неудачей. Исключение даёт более подробную информацию о точном характере сбоя. Это полезно при отладке gradchecks.
  • check_sparse_nnz (bool, необязательно) – если True, gradcheck допускает вход SparseTensor, и для любых входных SparseTensor gradcheck будет выполнять свою проверку только в nnz позициях. Аргумент check_sparse_nnz устарел, используйте вместо него аргумент masked. Если check_sparse_nnz != masked, генерируется исключение.
  • 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

© 2024, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://pytorch.org/docs/2.1/generated/torch.autograd.gradcheck.html

Spec-Zone.ru

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