TensorFlow笔记:激活函数

tf.nn.sigmid()函数

函数表达式

f ( x ) = 1 1 + e − x f(x) = \frac{1}{1 + e^{-x}} f(x)=1+ex1

函数图像

在这里插入图片描述

函数性质

对其求导可得到 f ′ ( x ) = f ( x ) ( 1 − f ( x ) ) f'(x) = f(x)(1 - f(x)) f(x)=f(x)(1f(x))
sigmoid函数取值范围在 (0, 1) 区间内,常用于输出层进行二分类
sigmoid函数之前使用很广泛,但因为sigmoid函数的特点,也存在一些缺点

  1. 在输入点远离零点时,其梯度就会变得很小,在反向传播中容易出现梯度消散
  2. 函数的输出得到的值永远为正,均值非零,这在前向传播中算是一种缺陷

tf.nn.tanh()函数

函数表达式

f ( x ) = e x − e − x e x + e − x = 1 − e − 2 x 1 + e − 2 x f(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}} = \frac{1 - e^{-2x}}{1 + e^{-2x}} f(x)=ex+exexex=1+e2x1e2x

函数图像

在这里插入图片描述

函数性质

对其求导可得到 f ′ ( x ) = 1 − ( f ( x ) ) 2 f'(x) = 1 - (f(x))^{2} f(x)=1(f(x))2
tanh又称为双曲正切函数,函数取值范围在 (0, 1) 区间内,可以看做对sigmoid函数做了拉伸和平移,解决了sigmoid均值不为零的特点


tf.nn.relu()函数

函数表达式

f ( x ) = m a x ( 0 , x ) f(x) = max(0, x) f(x)=max(0,x)

函数图像

在这里插入图片描述

函数性质

relu函数对线性函数小于零的部分进行了修正,其优点有梯度计算方便,并且在输入为正时不会产生梯度消散
但是当输入小于零时,对应的神经元输出为零,及不被激活的状态,并且该节点的梯度也随即变为零,造成神经元死掉( die
因此在使用relu作为激活函数时,learning_rate 的设置很重要,通常不能太大


tf.nn.leaky_relu()函数

函数表达式

f ( x ) = { α x x &lt; 0 x x ≥ 0 f(x) = \begin{cases} \alpha x &amp; x &lt; 0 \\ x &amp; x \geq 0 \\ \end{cases} f(x)={αxxx<0x0

函数图像

在这里插入图片描述

函数性质

leaky_relu是对relu函数小于零的部分进行了修正,为其提供了一个较小的导数 α
对于其中的 α 参数,通常是通过先验知识人工赋予一个值。但是如果将其作为一个参数进行训练,则得到了另一个激活函数prelu,此处就不介绍了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值