ModuleDict¶
- class torch.nn.ModuleDict(modules=None)[來源][來源]¶
將子模組儲存在一個字典中。
ModuleDict可以像常規 Python 字典一樣進行索引,但它包含的模組已正確註冊,並且對所有Module方法可見。ModuleDict是一個有序字典,遵循插入順序,以及
在
update()中,合併的OrderedDict、dict(從 Python 3.6 開始)或另一個ModuleDict(update()的引數)的順序。
請注意,使用其他無序對映型別(例如,Python 3.6 版本之前的普通
dict)進行update()操作不會保留合併對映的順序。- 引數
modules (iterable, optional) – 一個(string: module)對映(字典)或一個型別為(string, module)的鍵值對可迭代物件
示例
class MyModule(nn.Module): def __init__(self) -> None: super().__init__() self.choices = nn.ModuleDict({ 'conv': nn.Conv2d(10, 10, 3), 'pool': nn.MaxPool2d(3) }) self.activations = nn.ModuleDict([ ['lrelu', nn.LeakyReLU()], ['prelu', nn.PReLU()] ]) def forward(self, x, choice, act): x = self.choices[choice](x) x = self.activations[act](x) return x
- update(modules)[來源][來源]¶
使用來自對映的鍵值對更新
ModuleDict,覆蓋現有鍵。注意
如果
modules是一個OrderedDict、一個ModuleDict或一個鍵值對可迭代物件,則保留其中新元素的順序。