美文网首页
激活函数

激活函数

作者: 就是大饼 | 来源:发表于2023-08-06 21:58 被阅读0次

目的:使模型(e.g., MLP)不会退化成线性模型

ReLu

修正线性单元(Rectified linear unit,ReLu)


relu公式

实现:

%matplotlib inline
import torch
from d2l import torch as d2l

# ReLu函数图
x = torch.arange(-8.0, 8.0, 0.1, requires_grad= True)
y = torch.relu(x)
d2l.plot(x.detach(), y.detach(), 'x', 'relu(x)', figsize = (5, 2.5))
relu函数图

当输入为负时,ReLU函数的导数为0,而当输入为正时,ReLU函数的导数为1。 注意,当输入值精确等于0时,ReLU函数不可导。 在此时,我们默认使用左侧的导数,即当输入为0时导数为0。 我们可以忽略这种情况,因为输入可能永远都不会是0。

y.backward(torch.ones_like(x), retain_graph = True) #返回一个用1填充的张量,其大小与输入相同。
# 进行一次backward之后,各个节点的值会清除,这样进行第二次backward会报错,如果加上retain_graph==True后,计算节点中间值不会被释放,可以再来一次backward。
d2l.plot(x.detach(), x.grad, 'x','grad of relu', figsize=(5,2.5))
relu函数导数图

PReLU

y = torch.prelu(x, torch.tensor([0.25]))
d2l.plot(x.detach(), y.detach(), 'x', 'prelu(x)', figsize = (5, 2.5))
PReLU函数图

PReLU函数梯度图

x.grad.data.zero_()
y.backward(torch.ones_like(x), retain_graph=True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of prelu', figsize = (5, 2.5))
PReLU函数梯度图

sigmoid

sigmoid公式
y = torch.sigmoid(x)
d2l.plot(x.detach(), y.detach(), 'x', 'sigmoid(x)', figsize = (5, 2.5))
sigmoid函数图

sigmoid函数的导数

# 清除以前的梯度
x.grad.data.zero_()
y.backward(torch.ones_like(x), retain_graph = True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of sigmoid', figsize = (5,2.5))
sigmoid函数导数公式
sigmoid函数导数图

tanh函数

tanh函数公式

注意,当输入在0附近时,tanh函数接近线性变换。 函数的形状类似于sigmoid函数, 不同的是tanh函数关于坐标系原点中心对称。

y = torch.tanh(x)
d2l.plot(x.detach(), y.detach(), 'x', 'tanh(x)', figsize = (5, 2.5))
tanh函数图

tanh函数的导数:

# 清楚以前的梯度
x.grad.data.zero_()
y.backward(torch.ones_like(x), retain_graph = True)
d2l.plot(x.detach(), x.grad, 'x', 'grad of tanh', figsize = (5, 2.5))
tanh函数的导数
tanh函数导数图

相关文章

  • 激活函数softmax-P2分类任务

    激活函数种类激活函数作用 激活函数 深度学习常用激活函数之— Sigmoid & ReLU & Softmax 深...

  • 6.神经网络训练细节part1

    一、激活函数 前边我们学到,一个节点的输出会进入激活函数进行处理 常见的激活函数有以下 sigmoid激活函数 s...

  • tanh函数&logistic函数

    传统Sigmoid系激活函数 传统Sigmoid系激活函数 传统Sigmoid系激活函数,Sigmoid系(Log...

  • 机器学习之神经网络

    什么是神经网络 就是使用了平滑的激活函数的多层感知机 激活函数 什么是激活函数呢? 激活函数就是从输入值到对应输出...

  • [Machine Learning From Scratch]-

    激活层激活函数定义 封装激活层

  • 2019-10-09

    深度学习第三天 激活函数: 激活函数是...

  • 理解激活函数

    一、何为激活函数? 深度学习中,激活函数通常指能够实现非线性映射的函数 二、为什么需要非线性激活函数? 定义:这里...

  • 03 多层感知机

    激活函数 ReLU ReLU(x)=max(x,0) Sigmoid函数 tanh函数 激活函数的选择 多层感知机...

  • 非线性激活函数的作用

    一直有个疑问 为什么需要非线性激活函数?如果没有激活函数g(z),即g(z)=z,就叫线性激活函数,或者叫恒等激活...

  • Machine Learning基础:激活函数(Activiat

    Machine Learning基础:激活函数(Activiation Function)   激活函数通常有如下...

网友评论

      本文标题:激活函数

      本文链接:https://www.haomeiwen.com/subject/cvcqpdtx.html