Spec-Zone.ru › PyTorch 2

torch.nn.utils.stateless.functional_call

torch.nn.utils.stateless.functional_call(module, parameters_and_buffers, args, kwargs=None, *, tie_weights=True, strict=False) [source]

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

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

Этот 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

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

Spec-Zone.ru

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