ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

第四讲 Pytorch理解激活函数

2022-01-23 10:02:13  阅读:163  来源: 互联网

标签:plt 函数 sigmoid torch Pytorch import 激活


第四讲 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更多的激活函数并绘制图形

标签:plt,函数,sigmoid,torch,Pytorch,import,激活
来源: https://blog.csdn.net/qq_42279468/article/details/122647679

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有