gpt4 book ai didi

python - 如何创建模块列表列表

转载 作者:太空宇宙 更新时间:2023-11-03 20:00:20 26 4
gpt4 key购买 nike

可以创建 PyTorch 模块列表的 python 列表吗?例如,如果我想在一个层中有一些 Conv1d,然后在另一层有不同的 Conv1d。在每一层中,我需要根据层数对输出进行不同的操作。构建模块列表的“python-list”的正确方法是什么?

这样:

    class test(nn.Module):
def __init__(...):
self.modulelists = []
for i in range(4):
self.modulelists.append(nn.ModuleList([nn.Conv1d(10, 10, kernel_size=5) for _ in range(5)]))

或者这样:

    class test(nn.Module):
def __init__(...):
self.modulelists = nn.ModuleList()
for i in range(4):
self.modulelists.append(nn.ModuleList([nn.Conv1d(10, 10, kernel_size=5) for _ in range(5)]))

谢谢

最佳答案

您需要正确注册网络的所有子模块,以便 pytorch 可以访问它们的参数、缓冲区等。
仅当您使用正确的 containers 时才能完成此操作.
如果你将子模块存储在一个简单的 pythonic 列表中,pytorch 将不知道那里有子模块,并且它们将被忽略。

因此,如果您使用简单的Pythonic列表来存储子模块,那么当您调用例如model.cuda()时,列表中子模块的参数将不会转移到 GPU,而是保留在 CPU 上。如果您调用 model.parameters() 将所有可训练参数传递给优化器,则所有子模块参数将不会被 pytorch 检测到,因此优化器将不会“看到”他们。

关于python - 如何创建模块列表列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59277388/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com