利用BP神经网络逼近sin函数

利用神经网络逼近sin函数

代码被改得面目全非就不贴了,思路很简单,(1,5,1)的网络,从-pi到pi取1000个点,单个往网络里扔,误差值直接用预测与真实值差值决定,保留正负号,正常求导,速率0.003,1000个点迭代500次,训练完拿500个等间距点计算误差值平方和有0.5多,5000次有0.35,不过5000次迭代要十几个小时。

下图蓝色是真实值,红色是预测值,是500次的结果,很明显的在值接近于1的地方拟合很差,整体预测比真是值扁,不知道是不是用了tanh的问题,希望以后能解决吧

在这里插入图片描述

不知道过了多少天,突然醒悟了极值不能逼近的原因是tanh=1时斜率会消失导致反向传播基本没用,又过了一天想着取个巧既然tanh=1没斜率那能不能不逼近sin了逼近0.5sin行不行,这样tanh=0.5时斜率还很大,于是完全没有迁移上次学习结果的情况下把结构减少到(1,5,1)且只迭代2000次,结果给我看哭了,600个点取欧式距离只有0.12多,而且又迭代了几次这个值还能继续变小在这里插入图片描述

又加跑了2000次,500个采样点取欧式距离和只有0.003,而且看样子还能继续变小,不过到这就够了
在这里插入图片描述


这个先告一段落,下次试试更难的图像风格迁移吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值