PyTorch: nn.ModuleList


nn.ModuleList


Python Listと同様、nn.モジュールを格納したり、インデックスにアクセスしたりできます.

使用方法


Python Listをnn.ModuleList()で包んでください!
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

Python Listとの違い


nn.モジュールリストにモジュールを入れ、その存在をPyTorchに伝える.場合モジュールリストにモジュールを入れず、Pythonリストにモジュールだけを入れると、PyTorchはモデルパラメータの存在を知ることができません!したがって、オプティマイザ宣言時にmodel.parameter()を使用してパラメータを伝達しようとすると、エラーが発生します.したがって,モジュールをPythonリストに入れてアーカイブすると,最後にnnとなる.モジュールリストで包装します!