问题
解决
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