Spec-Zone.ru › PyTorch 2.14

torch.nn.utils.stateless.functional_call

torch.nn.utils.stateless.functional_call(module, parameters_and_buffers, args=None, kwargs=None, *, tie_weights=True, strict=False) [исходный код]

Выполняет функциональный вызов модуля, заменяя параметры и буферы модуля указанными значениями.

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

Этот API устарел начиная с PyTorch 2.0 и будет удалён в будущей версии PyTorch. Вместо него используйте torch.func.functional_call(), который является полноценной заменой этого API.

Примечание

Если для модуля активны параметризации, передача значения в аргумент parameters_and_buffers с именем, совпадающим с именем обычного параметра, полностью отключит параметризацию. Чтобы применить функцию параметризации к переданному значению, укажите ключ {submodule_name}.parametrizations.{parameter_name}.original.

Примечание

Если модуль выполняет операции на месте с параметрами/буферами, эти изменения отразятся во входном значении parameters_and_buffers.

Пример:

>>> a = {'foo': torch.zeros(())}
>>> mod = Foo()  # does self.foo = self.foo + 1
>>> print(mod.foo)  # tensor(0.)
>>> functional_call(mod, a, torch.ones(()))
>>> print(mod.foo)  # tensor(0.)
>>> print(a['foo'])  # tensor(1.)

Примечание

Если у модуля есть связанные веса, соблюдение связей функцией functional_call определяется флагом tie_weights.

Пример:

>>> a = {'foo': torch.zeros(())}
>>> mod = Foo()  # has both self.foo and self.foo_tied which are tied. Returns x + self.foo + self.foo_tied
>>> print(mod.foo)  # tensor(1.)
>>> mod(torch.zeros(()))  # tensor(2.)
>>> functional_call(mod, a, torch.zeros(()))  # tensor(0.) since it will change self.foo_tied too
>>> functional_call(mod, a, torch.zeros(()), tie_weights=False)  # tensor(1.)--self.foo_tied is not updated
>>> new_a = {'foo': torch.zeros(()), 'foo_tied': torch.zeros(())}
>>> functional_call(mod, new_a, torch.zeros()) # tensor(0.)
Параметры:
  • module (torch.nn.Module) – модуль для вызова
  • parameters_and_buffers (dict of str and Tensor) – параметры, которые будут использоваться при вызове модуля.
  • args (Any or tuple) – аргументы, передаваемые при вызове модуля. Если это не кортеж, считается одним аргументом.
  • kwargs (dict) – именованные аргументы, передаваемые при вызове модуля
  • tie_weights (bool, optional) – Если True, параметры и буферы, связанные в исходной модели, будут считаться связанными и в версии с заменёнными параметрами. Поэтому при значении True передача разных значений для связанных параметров и буферов приведёт к ошибке. При значении False исходные связи параметров и буферов не сохраняются, если только для обоих весов не переданы одинаковые значения. Значение по умолчанию: True.
  • strict (bool, optional) – Если True, переданные параметры и буферы должны соответствовать параметрам и буферам исходного модуля. Поэтому при значении True отсутствие ключей или наличие неожиданных ключей приведёт к ошибке. Значение по умолчанию: False.
Возвращает:

результат вызова module.

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

Any

© 2026, PyTorch Contributors
PyTorch has a BSD-style license, as found in the LICENSE file.
https://docs.pytorch.org/docs/2.14/generated/torch.nn.utils.stateless.functional_call.html

Spec-Zone.ru

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