问题

解决
1. NotImplementedError 错误:
子类没有完成父类的接口,在此就是父类(nn.Module)中的 forward 方法在子类中没有定义,则会自动调用 nn.Module 中的forward方法,而 nn.Module 中的 forward 是 raise 将错误抛出。所以出现 NotImplementedError 错误。
2. 问题锁定在forward方法上:
a). 没有对齐,forward 定义的代码段,可能多了个Tag;
b). 拼写错误,forward 拼写成 forword;
c). 根本没有写forward(逐渐离谱);
d). nn.Sequential 与 nn.ModuleList 用错:
__init__部分代码

forward部分代码

由于当天用了很多此 nn.ModuleList,然后在这里我本意是用 nn.Sequential 但是我习惯性打了 nn.ModuleList,找了很久才发现,裂开。
问题原因(为什么报错是NotImplementedError)
在我们对 Module 子类,这样使用的时候,他会调用forward函数。
spatical_feature = self.SpaticalConv(spatical_x)
spectral_feature = self.SpectralConv(spectral_x)
nn.Sequential
在 nn.Sequential 中有forward方法的定义,

表示依次执行多个 module
nn.ModuleList
在 nn.ModuleList 中有 insert, append, extend 方法,但是没有 forward 的定义,所以会出现 NotImplementedError
两者差别

这篇博客介绍了在PyTorch中子类化nn.Module时遇到的NotImplementedError错误,主要是因为子类未实现父类的forward方法。错误可能源于forward方法的拼写错误、未定义、使用nn.ModuleList代替nn.Sequential等。nn.Sequential有内置的forward方法,而nn.ModuleList则没有。理解两者的区别对于避免此类错误至关重要。
1540

被折叠的 条评论
为什么被折叠?



