评价此页

ModuleDict#

class torch.nn.modules.container.ModuleDict(modules=None)[源代码]#

以字典形式保存子模块。

ModuleDict 可以像普通 Python 字典一样进行索引,但其中包含的模块会被正确注册,并对所有 Module 方法可见。

ModuleDict 是一个**有序**字典,它会保留

  • 插入的顺序,并且

  • update() 方法中,会保留合并的 OrderedDictdict(从 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
clear()[源代码]#

从 ModuleDict 中移除所有项。

items()[源代码]#

返回 ModuleDict 键/值对的可迭代对象。

返回类型

ItemsView[str, Module]

keys()[源代码]#

返回 ModuleDict 键的可迭代对象。

返回类型

KeysView[str]

pop(key)[源代码]#

从 ModuleDict 中移除键并返回其模块。

参数

key (str) – 要从 ModuleDict 中移除的键。

返回类型

模块

update(modules)[源代码]#

使用来自映射的键值对更新 ModuleDict,并覆盖现有键。

注意

如果 modulesOrderedDictModuleDict 或键值对的可迭代对象,则其中新元素的顺序将得到保留。

参数

modules (iterable) – 一个从字符串到 Module 的映射(字典),或者一个包含 (string, Module) 类型键值对的可迭代对象。

values()[源代码]#

返回 ModuleDict 值(modules)的可迭代对象。

返回类型

ValuesView[Module]