Pytorch与激活函数——Sigmoid函数, ReLU函数, Tanh函数

Pytorch与激活函数

Sigmoid函数

ReLU函数

Tanh函数


本章内容提示:了解常用的激活函数,利用激活函数,建立简单的三层神经网络模型。

传统的全联接网络是让数据不断地通过线性函数层和激活函数层,从而得到最终的预测结果。 因此,我们学习完激活函数后,就可以结合线性函数来完成一个传统的全链接网络模型。 常见的激活函数有Sigmoid函数,tanh函数,Relu函数

Sigmoid函数

公式:    p=\frac{1}{1+e^{-t}}

import numpy as np
import matplotlib.pyplot as plt

'''手写Sigmoid函数'''
def sigmoid(x):
    return 1 / (1 + np.exp(-x))


# 画图
y = np.linspace(-10, 10, 100)
plt.plot(y, sigmoid(y), 'b')
plt.grid(linestyle='--')
plt.xticks([-4, -3, -2, -1, 0, 1, 2, 3, 4])
plt.yticks([0, 0.5, 1])
plt.ylim(0, 1)
plt.xlim(-4, 4)
plt.show()

Pytorch与激活函数——Sigmoid函数, ReLU函数, Tanh函数_第1张图片

 从图中可以看到,激活函数Sigmoid在定义域内处处可求导.  但是,通过曲线的斜率,可以发现,当输入一个较小或较大的数据时,该函数的导数会变得很小,梯度趋近于0.  例如, 每一次梯度值都减少0.25,如果神经网络层级过多,那么当梯度穿过多层后将变得非常接近于0,如0.03的n次方. 即出现梯度消失的现象,进而造成模型无法收敛. 这也就是曾经被广泛使用的sigmoid函数,现在却很少使用的原因。

ReLU函数

Tanh函数

你可能感兴趣的:(深度学习,pytorch,人工智能,python)