Perceptron algorithm正则化踩坑记录

今天又是一个好日子,鏖战半夜三四点,在对感知机算法Perceptron algorithm进行正则化时候遇到一些小坑。

首先

Percepton对L2正则化中,学习率=1最后是可以不计入的,那么对“λ”来说,不是设置一个float就行。“λ”的维度必须和W权重维度一样。

1.第一个坑:TypeError: unsupported operand type(s) for -: 'list' and 'list'

reg=[0.001 for _ in range(n_feature)]
 self._w = (constant-Regularization)*self._w + y[i] * X[i]

然后我就直接做减法了,就出现了以下作文

不能直接用 t=[…],这样建立的是 list 类型。 所以方法之一是引入 numpy 库。

   Regularization = np.array(Regularization)

2.第二个坑:untimeWarning: overflow encountered in multiply

我直接他妈乘起来!

 self._w = (constant-Regularization)*self._w + y[i] * X[i]

好家伙直接报错:untimeWarning: overflow encountered in multiply

重点:

 self._w = (constant-Regularization)*self._w 
这边的(constant-Regularization)我设置为了100

已经是矩阵乘矩阵了,为什么还会人工脑溢出呢?

原因:如果将矩阵a与作为元素的大数字相乘,则会引发异常

解决:可以通过修改调用函数的数组元素的类型来提高精度。

 a = np.array(a, dtype=np.float128)

好了不报错了。

如何设置λ

将您的训练数据集分为训练和验证部分(例如80%-20%)
尝试使用不同的λ值(通常以对数标度),例如 λ= 10-5,10-4,10-3,10-2,10-1,1,0,101,102,103,104,105

验证数据。
为每个λ训练不同的分类模型,并选择在λ上具有最佳性能(例如准确性)的值

这个坑就坑在,一开始正则化系数为0.01,并不会报错,但是一旦达到100,就会引发异常。

 

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

董厂长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值