前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pytorch基础知识-激活函数

Pytorch基础知识-激活函数

作者头像
用户6719124
发布2019-11-17 22:07:45
5860
发布2019-11-17 22:07:45
举报

本节首先对之前所学到的激活函数进行回顾与巩固,随后介绍一些其他类型的激活函数,

如图,蓝线为sigmoid激活函数,sigmoid激活函数可以将数值压缩至0到1,特别适合于probability和RGB的计算,但它具有梯度离散的问题,在边缘时梯度接近于0,会导致无法继续优化的情况。

而红线是tanh函数,是sigmoid函数经过缩放平移得到的,其区间范围是-1至1,中间范围更窄,梯度变化更大,同样tanh也会存在梯度离散的情况,tanh较多应用于RNN循环神经网络中。

上图中的Relu函数较sigmoid函数更简单,它具有一阈值,当输入值小于莫一阈值时,输出为0。当达到阈值后,进行线性输出。relu函数一定程度上解决了梯度离散的问题。

但relu函数在梯度小于0的时候仍会出现梯度离散的情况。为解决此问题后人研究了Leaky ReLU函数。

由图可看出,Leaky ReLU函数在梯度小于0的部分进行一定程度上的倾斜,倾斜度为α。

写代码如下

代码语言:javascript
复制
import torch.nn as nn

nn.Linear(784, 200),
nn.LeakyReLU(inplace=True),
nn.Linear(200, 200),
nn.LeakyReLU(inpalce=True),
nn.Linear(200, 10),
nn.LeakyReLU(inplace=True)

这里倾斜角度α也可以进行指定,后续会进行讲解。

这里注意到无论是ReLU还是Leaky ReLU,均在0处不连续,后人研究了一种梯度更平滑的SELU函数。

这样在x小于0处也具有更平滑的梯度。

另外还有softplus函数

softplus也在x=0处进行了平滑处理。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 python pytorch AI机器学习实践 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档