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