【源码+文档】基于HLS的高效深度卷积神经网络FPGA实现方法

1.3 激活函数的选择

在进行激活函数选择前,首先引入梯度消失和梯度爆炸的概念,以便更好的解释具体的选择原因。假定有一个由三个卷积层级联而成的网络结构,每一层的输出为 gk(wk×xk+bk),而每一层的期望值为 yk(其中 k 表示第 k 层网络,g 为该层的激活函数,w 为该层的权重,b 为该层的偏置)。则每一层的误差 loss=|ykgk(wk×xk+bk)|,而当在训练过程中进行反向传播时,通常采用的是梯度下降法来更正参数,则需将 w 修改为 wk+r×△wk,其中 r 是学习率。此时△w3便等于 dloss∕dw3=(dloss∕dg3)×(dg3 ∕dg2) ×(dg2 ∕dg1)×(dg1 ∕dw1),可见其中(dg3 ∕dg2 )和(dg2 ∕sdg1 )都是激活函数 g 的导数值。因此当 g 的导数值小于 1 时,在更深的网络层,△w 将变得非常小,便造成了梯度消失,使得权重每次迭代更新甚微甚至得不到更新,导致整体网络学习缓慢或受到停滞,令最终的检测效果大大折扣不说,还浪费了很长的时间。相反,当 g 的导数值大于 1 时,则会带来梯度爆炸现象,使得权重参数异常巨大或接近零值,以至超出所使用数据类型的表示范围而出现大量的 NAN 值,给网络带来很大的不稳定性。

因此无论现在已被广泛使用的 Sigmod 函数或 Tanh 函数,都会出现梯度消失的情况(其中 Tanh 的函数及其导数图像如图 1.3 所示),因为当其输入较大或较小时,其导数均接近于零。而当将其进行硬件实现时,因 Sigmod 函数或 Tanh 函数过高的复杂度只能采用多项式拟合或查表法来近似,以

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值