tensorflow学习笔记——常用的**函数

1.sigmoid

公式:

tensorflow学习笔记——常用的**函数

图像:

tensorflow学习笔记——常用的**函数

从图中可以看到,sigmoid**函数会将所有输入都转到0-1范围内。如此之外,它的倒数有一个常用到的性质:

tensorflow学习笔记——常用的**函数

即它的倒数可由自身表示。

  • 优点:它输出映射在0-1内,单调连续,可以用来作分类,并且求导比较容易;
  • 缺点:具有软饱和性,一旦输入过大或过小,一阶导数就变得接近于0,很容易产生梯度消失的现象。

tesorflow使用:tf.sigmoid(x)

2.tanh

公式:

tensorflow学习笔记——常用的**函数

注意:

tensorflow学习笔记——常用的**函数

tensorflow学习笔记——常用的**函数称为双曲正弦函数

图像:

tensorflow学习笔记——常用的**函数

它将整个实数区间映射到了(-1,1),tanh函数也具有软饱和性。它的输出是以0为中心,tanh的收敛速度比sigmoid要快,由于存在软饱和性,所以tanh也存在梯度消失的问题。

tensorflow使用:tf.tanh(x)

3.ReLU

公式:

tensorflow学习笔记——常用的**函数

图像:

tensorflow学习笔记——常用的**函数

relu函数在x<0时,输出始终为0。由于x>0时,relu函数的导数为1,所以relu函数能够在x>0时保持梯度不断衰减,从而缓解梯度消失的问题,还能加快收敛速度,还能是神经网络具有稀疏性表达能力,因此它应该是目前使用最广泛的**函数(博主在论文里经常见到)。

不过由于当x<0时,relu函数的导数为0,导致对应的权重无法更新,可能导致部分神经元无法被**。

tensorflow使用:tf.nn.relu(x)

针对ReLU**函数可能导致部分神经元无法被**的情况,由很多改进版,比如Leaky ReLU,当x小于0时,也会有一个较小的斜率(比如0.2),但不为0。

tensorflow使用:tf.nn.leaky_relu(x,alpha=0.2)

4. softplus 

softplus函数可以看作是relu函数的平滑版本

tensorflow学习笔记——常用的**函数

图像:

tensorflow学习笔记——常用的**函数

tensorflow使用:tf.nn.softplus(features, name = None)