用numpy自定义两层神经网络回归模型

本文记录了作者使用numpy实现两层神经网络回归模型的心得体会,包括神经网络的非线性拟合作用、参数学习、反向传播算法的理解以及学习率对训练效果的影响。作者强调了矩阵操作在提升计算效率中的作用,并分享了实践中的经验。
摘要由CSDN通过智能技术生成

小克资历尚浅,深度学习过程中,记录心得体会,如果有大神发现错的地方,还请麻烦告知,万分感谢!

 

神经网络无非扮演着非线性拟合数据的角色,每一层可以看作是拟合一部分数据信息,直至将所有数据信息都学习出来,

每个神经元都是线性函数与非线性激活函数(relu,sigmoid,tanh等)的组合,都有对应的参数要学习,

层数及神经元数目越多,则参数数量越庞大,

因为需要通过反向传递学习的损失,进而获得最优参数值,参数矩阵越大,需要的内存及计算量越大,因此,一般层数选择三层以内,也因此后续出现卷积神经网络,以谋求在尽量获取数据信息的基础上,通过过滤(卷积)及筛选(池化),尽可能减小参数数量

如果是回归模型,则最后一层可以无需非线性激活

如果是分类模型,则最后一层可以使用softmax或sigmoid激活

对于反向传播算法,其实是链式求导法则在求解损失函数对参数的导数时的公式:即,根据正向传播的计算图,可以得到各个节点的节点值,这些节点值也正可以代入链式求导过程中,从而计算出损失函数对参数的导数

由于使用numpy矩阵,因此矩阵的shape要每一步都搞清楚,这样计算才不会出错(其实所有for循环,如果对每一条数据的处理都一致,则可以使用矩阵来替代for循环,可以加快计算速度,如同分布式运算一样,N条数据同时运算当然比N条数据逐一运算更快)

如下代码参考某培训班课程讲义,自己再实现一

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值