0
点赞
收藏
分享

微信扫一扫

第四讲 Pytorch理解激活函数

北溟有渔夫 2022-01-23 阅读 165

第四讲 Pytorch理解激活函数

一 本节课程介绍

1.1 知识点

1、神经网络激活函数的基本介绍;
2、pytorch实现Relu激活函数;
3、pytorch实现Tanh激活函数;
4、pytorch实现Sigmoid激活函数;

二 课程内容

2.1 激活函数基本介绍

神经网络是通过算法模拟生物的神经传递实现的算法。在生物的神经元之间的传递依赖于神经元的激活状态,即点火与否,分别为1和0。为了模拟这种神经元传递,使用构建激活函数的方式进行信息传递。

2.1.1 Sigmoid和Tanh激活函数

sigmoid激活函数值的范围为(0, 1),经过它激活得到的数据为非0均值;sigmoid 激活函数具有双向饱和性,即在一定数据范围内,其导数趋于 0 收敛。且其导数范围为(0,0.25),且不在(−3,3)的数据导数值很小,在反向传播过程时,导数相乘很容易造成梯度弥散;sigmoid 激活函数求导过程计算量较大,模型训练的时间复杂度较高。其公式如下:
Sigmoid(x)=1/(1+e^(-x) )

tanh 激活函数解决了 sigmoid 激活函数非0均值的问题 ,且其导数范围为(0,1),从而略微缓减了sigmoid 激活函数梯度弥散的问题;但 tanh 激活函数存在的双向饱和性仍然使得梯度弥散问题存在,且模型训练的时间复杂度较高。其公式如下:
tanh(x)=(ex-e(-x))/(ex+e(-x) )

在这里插入图片描述

2.1.2 Relu激活函数介绍

激活函数 ReLU 的提出和应用很好地解决了sigmoid 和 tanh函数存在的 “ 梯度消 失” 问题。虽然ReLU函数的稀疏性很好地解决了“S型”软饱和激活函数带来的梯度消失的问题 ,但是ReLU负半轴存在的硬饱和置 0,这可能会导致“神经元坏死”,也使得它的数据分布不为0均值,模型在训练过程可能会发生神经元“坏死”的状况。为了解决 Relu 负半轴“神经元坏死”的情况,研究者们对ReLU的负半轴下功夫改造 ,提出了LeakyReLU、 PReLU、RReLU等激活函数。其Relu激活函数公式如下可见:
ReLu(x)={█(x,x≥0@0,x<0)

在这里插入图片描述

三 实验测试

3.1 Pytorch实现ReLU激活函数

首先要导入库:
import torch
from torch.functional import F
from torch.autograd import variable
import matplotlib.pyplot as plt
(1)数据生成,在-2到2之间均匀生成200个数据。
x=torch.linspace(-2,2,200)
(2)将x转为torch变量:
x=variable(x)
(3)生成x对应的numpy矩阵数据,方便绘图。:
x_np=x.data.numpy()
(4)使用Relu函数生成数据:
y_relu=F.relu(x).data.numpy()
(5)绘图输出:
plt.plot(x_np,y_relu)
plt.show()
最终运行结果为:
在这里插入图片描述

3.2 Pytorch实现Sigmoid激活函数

首先要导入库:
import torch
from torch.functional import F
from torch.autograd import variable
import matplotlib.pyplot as plt
(1)数据生成,在-2到2之间均匀生成200个数据。
x=torch.linspace(-2,2,200)
(2)将x转为torch变量:
x=variable(x)
(3)生成x对应的numpy矩阵数据,方便绘图。:
x_np=x.data.numpy()
(4)使用Sigmoid函数生成数据:
y_sigmoid=F.sigmoid(x).data.numpy()
(5)绘图输出:
plt.plot(x_np,y_sigmoid)
plt.show()
最终运行结果为:
在这里插入图片描述

3.3 Pytorch实现Tanh激活函数

首先要导入库:
import torch
from torch.functional import F
from torch.autograd import variable
import matplotlib.pyplot as plt
(1)数据生成,在-2到2之间均匀生成200个数据。
x=torch.linspace(-2,2,200)
(2)将x转为torch变量:
x=variable(x)
(3)生成x对应的numpy矩阵数据,方便绘图。:
x_np=x.data.numpy()
(4)使用Tanh函数生成数据:
y_tanh=F.tanh(x).data.numpy()
(5)绘图输出:
plt.plot(x_np,y_tanh)
plt.show()
最终运行结果为:
在这里插入图片描述

四 思考与作业

尝试测试pytorch更多的激活函数并绘制图形

举报

相关推荐

0 条评论