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となる.モジュールリストで包装します!
Reference
この問題について(PyTorch: nn.ModuleList), 我々は、より多くの情報をここで見つけました
https://velog.io/@danbibibi/PyTorch-nn.ModuleList
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
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
Reference
この問題について(PyTorch: nn.ModuleList), 我々は、より多くの情報をここで見つけました https://velog.io/@danbibibi/PyTorch-nn.ModuleListテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol