解决TypeError: type complex doesn‘t define __round__ method

在调整学习率的时候遇到的一个bug,现已解决。
在这里插入图片描述
首先看这个bug说的是:类型complex(复数:i+j)类型不能使用round函数。
为啥不能使用呢:
在这里插入图片描述
round函数是四舍五入,round(lr,10)就是取lr四舍五入后十位。而复数不能进行四舍五入。
那么lr是一个复数,为什么lr是一个复数?
我们知道复数是对负数开偶数次方,也就是lr是一个负数,这显然是不合理的,那么lr是通过lr_scheduler在不断的迭代减小的,说明lr已经减少到负数了,那肯定是lr_scheduler的原因了。
我们找到lr_scheduler:

lr_scheduler = PolyLR(optimizer,
                      max_epoch=500,
                      power=0.9)

我使用的poly学习率:图片参考
在这里插入图片描述
在这里插入图片描述
lr为负,说明epoch/num_epoch已经大于1了,当前的epoch大于总的epoch也是不现实的。
然后我就在打印学习率地方设置了print。打印一下学习率。
在这里插入图片描述
然后我就发现了在epoch1的第705个iteration处,lr为负值,702处为0,说明epoch已经为500,但是现在才是第1代呀!
相当在epoch=0时,795/3=265
在epoch=1时,702/3=234
234+265=500!!!
也就是错误的把polylr的epoch参数当做真实的的epoch参数了,polylr的epoch参数应该为iteration的数目,即总数为(795/3)*500=132500。因此把参数重新修改:
在这里插入图片描述
成功运行!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值