Initializes a Module lazily (similar to a lazy
setupis called once lazily on a module instance when a module is bound, immediately before any other methods like
__call__are invoked, or before a
setup-defined attribute on self is accessed.
This can happen in three cases:
Once the module is given a name by being assigned to an attribute of another module inside the other module’s
class MyModule(nn.Module): def setup(self): submodule = Conv(...) # Accessing `submodule` attributes does not yet work here. # The following line invokes `self.__setattr__`, which gives # `submodule` the name "conv1". self.conv1 = submodule # Accessing `submodule` attributes or methods is now safe and # either causes setup() to be called once.
Once a module is constructed inside a method wrapped with
compact(), immediately before another method is called or
setupdefined attribute is accessed.