一个包含子模块的list
ModuleList 可以像 Python list一样被索引
torch.nn.ModuleList(modules=None)
参数:
modules (iterable, optional) – an iterable of modules to add
示例:
class MyModule(nn.Module):
def __init__(self):
super(MyModule, self).__init__()
self.linears = nn.ModuleList([nn.Linear(10, 10) for i in range(10)])
def forward(self, x):
# ModuleList can act as an iterable, or be indexed using ints
for i, l in enumerate(self.linears):
x = self.linears[i // 2](x) + l(x)
return x
几个方法
1· append(module)
在list最后插入一个子模块
append(module)
参数:
module (nn.Module) – module to append
2· extend(modules)
也是在list的最后插入子模块,但是这个参数是python的可迭代对象,例如一堆子模块组成的list
Appends modules from a Python iterable to the end of the list.
extend(modules)
参数
modules (iterable) – iterable of modules to append
3· insert(index, module)
包含两个参数,就是在list的第index个子模块之前插入一个子模块
Insert a given module before a given index in the list.
insert(index, module)
参数
index (int) – index to insert.
module (nn.Module) – module to insert