【发布时间】:2020-04-05 00:44:24
【问题描述】:
我是 PyTorch 的新手,所以请原谅我的愚蠢问题。
我在 Encoder 对象的 init 中定义了一个 nn.Sequential,如下所示:
self.list_of_blocks = [EncoderBlock(n_features, n_heads, n_hidden, dropout) for _ in range(n_blocks)]
self.blocks = nn.Sequential(*self.list_of_blocks)
EncoderBlock 的前端是这样的
def forward(self, x, mask):
在我的编码器的 forward() 中,我尝试这样做:
z0 = self.blocks(z0, mask)
我希望 nn.Sequential 将这两个参数传递给各个块。
但是,我明白了
TypeError: forward() takes 2 positional arguments but 3 were given
当我尝试时:
z0 = self.blocks(z0)
我明白了(可以理解):
TypeError: forward() takes 2 positional arguments but only 1 was given
当我不使用 nn.Sequential 并且只执行一个又一个 EncoderBlock 时,它可以工作:
for i in range(self.n_blocks):
z0 = self.list_of_blocks[i](z0, mask)
问题:我做错了什么,在这种情况下如何正确使用 nn.Sequential?
【问题讨论】:
标签: deep-learning neural-network pytorch sequential attention-model