繁体   English   中英

PyTorch:如何正确创建 nn.Linear() 列表

[英]PyTorch : How to properly create a list of nn.Linear()

我创建了一个以 nn.Module 作为子类的类。

在我的课堂上,我必须创建 N 个线性变换,其中 N 作为类参数给出。

因此,我继续如下:

    self.list_1 = []

    for i in range(N):
        self.list_1.append(nn.Linear(self.x, 1, bias=mlp_bias))

在 forward 方法中,我调用这些矩阵(使用 list_1[i])并连接结果。

两件事情 :

1)

即使我使用 model.cuda(),这些线性变换也用于 cpu 并且我收到以下错误:

RuntimeError: Variable[torch.cuda.FloatTensor] 类型的预期对象,但发现参数 #1 'mat2' 的 Variable[torch.FloatTensor] 类型

我要做

self.list_1.append(nn.Linear(self.x, 1, bias=mlp_bias).cuda())

如果相反,这不是必需的,我这样做:

self.nn = nn.Linear(self.x, 1, bias=mlp_bias)

然后直接使用self.nn。

2)

出于更明显的原因,当我在主文件中打印(模型)时,我的列表中的线性矩阵没有打印出来。

有没有其他办法。 也许使用 bmm ? 我发现它不太容易,实际上我想单独获得 N 个结果。

先感谢您,

您可以使用nn.ModuleList来包装你的线性层的列表,说明这里

self.list_1 = nn.ModuleList(self.list_1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM