TensorFlow之三—激活函数(Activation Functions)


在TensorFlow的训练中,为了更好的模拟或者学习更多的特征,在线性函数中引入了非线性,又名激活函数。如果你对激活函数不甚了解,你可以点击 。这一章我们主要将一些常用的激活函数。 详情请点击
一些常用的激活函数如下图:
在这里插入图片描述

1. sigmoid函数

由上图第一个可知,导数从 0 开始很快就又趋近于 0 了,易造成“梯度消失”现象
调用函数:tf.sigmoid(x, name = None) == tf.nn.sigmoid(x, name = None)

2. tanh 双曲正切函数

tanh函数和sigmod函数的曲线是比较相近的,由上图。首先相同的是,这两个函数在输入很大或是很小的时候,输出都几乎平滑,梯度很小,不利于权重更新;不同的是输出区间,tanh的输出区间是在(-1,1)之间,而且整个函数是以0为中心的,这个特点比sigmod的好。它把输入映射到 (-1, 1) 区间,但仍然会导致梯度消失问题 !
调用函数:tf.tanh(x, name = None) == tf.nn.tanh(x, name = None)

公式: f ( x ) = e x − e − x e x + e − x f(x) = \frac{e^x-e^{-x}}{e^x+e^{-x}} f(x)=ex+exexex

3. relu 函数

比 sigmoid/tanh 收敛的更快,其导数在其权重和(z) 大于 0 的时候为 1,从而误差可以很好的传播,权重可以正常更新。

但是,其导数在其权重和(z) 小于 0 的时候为 0,会导致梯度值为0(神经元死亡),从而权重无法正常更新输出具有偏移现象,即输出均值恒大于零。
调用函数:tf.nn.relu(features, name=None)
公式:y = max(x, 0)

4. ELU函数

函数图如上图。
ELU函数是针对ReLU函数的一个改进型,相比于ReLU函数,在输入为负数的情况下,是有一定的输出的,而且这部分输出还具有一定的抗干扰能力。这样可以消除ReLU死掉的问题,不过还是有梯度饱和和指数运算的问题。

5. PReLU函数

函数图如上图。
PReLU也是针对ReLU的一个改进型,在负数区域内,PReLU有一个很小的斜率,这样也可以避免ReLU死掉的问题。相比于ELU,PReLU在负数区域内是线性运算,斜率虽然小,但是不会趋于0,这算是一定的优势吧。

我们看PReLU的公式,里面的参数α一般是取0~1之间的数,而且一般还是比较小的,如零点零几。当α=0.01时,我们叫PReLULeaky ReLU,算是PReLU的一种特殊情况吧。

6. 其它函数

tf.nn.relu6(features, name = None)
公式: min ⁡ ( max ⁡ ( f e a t u r e s , 0 ) , 6 ) \min ( \max(features, 0), 6 ) min(max(features,0),6)

tf.nn.softplus(features, name = None)
公式: log ⁡ ( exp ⁡ ( f e a t u r e s ) + 1 ) \log ( \exp( features ) + 1) log(exp(features)+1)

tf.nn.bias_add(value, bias, name = None) 偏执项

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SongpingWang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值