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