PyTorch继承nn.Module时,类函数forward出现raise NotImplementedError

问题

在这里插入图片描述

解决

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__部分代码

__iniit__部分代码

forward部分代码

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

两者差别

在这里插入图片描述

参考

  1. ModuleList
  2. Sequential
  3. 常见pytorch中NotImplementedError原因
  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值