当我阅读 torch.nn.Module 的源代码(python)时,我发现该属性
self._modules已在许多函数中使用,例如self.modules(), self.children()等。但是,我没有找到任何更新它的函数。那么,在哪里self._modules更新呢?另外,pytorch 的nn.Module子模块是怎么注册的?
class Module(object):
def __init__(self):
self._backend = thnn_backend
self._parameters = OrderedDict()
self._buffers = OrderedDict()
self._backward_hooks = OrderedDict()
self._forward_hooks = OrderedDict()
self._forward_pre_hooks = OrderedDict()
self._modules = OrderedDict()
self.training = True
def named_modules(self, memo=None, prefix=''):
if memo is None:
memo = set()
if self not in memo:
memo.add(self)
yield prefix, self
for name, module in self._modules.items():
if module is None:
continue
submodule_prefix = prefix + ('.' if prefix else '') …Run Code Online (Sandbox Code Playgroud)