• LeakyReLU激活函数


    nn.LeakyReLUPyTorch中的Leaky Rectified Linear Unit(ReLU)激活函数的实现。Leaky ReLU是一种修正线性单元,它在非负数部分保持线性,而在负数部分引入一个小的斜率(通常是一个小的正数),以防止梯度消失问题。这种激活函数的数学表达式如下:
    在这里插入图片描述
    negative_slope:x为负数时的需要的一个系数,控制负斜率的角度。默认值:1e-2(0.01)

    在这里插入图片描述

    1.nn.LeakyReLU的函数构成

    nn.LeakyReLU 是PyTorch中的Leaky Rectified Linear Unit(ReLU)激活函数的实现,它是torch.nn.Module的子类。下面是 nn.LeakyReLU 类的主要构成部分和参数:

    class nn.LeakyReLU(negative_slope=0.01, inplace=False)
    
    • 1

    构造函数参数:

    • negative_slope(默认为0.01):这是Leaky ReLU激活函数的负斜率,即在输入值为负数时的斜率。它是一个浮点数,通常设置为一个小的正数,以控制在负数区域的线性部分的斜率。较小的值会导致更线性的行为,较大的值会导致更接近传统ReLU的行为。
    • inplace(默认为False):如果设置为True,则会在原地修改输入张量,否则将创建一个新的张量作为输出。原地操作可以节省内存,但可能会改变输入张量的值。

    nn.LeakyReLU 在前向传播时将输入张量中的负值部分乘以 negative_slope,从而实现Leaky ReLU激活函数的效果。它通常用于深度神经网络中,以缓解梯度消失问题,并引入非线性变换。

    在PyTorch中,我们可以使用nn.LeakyReLU类来创建Leaky ReLU激活函数,并可以通过参数来设置斜率。

    2.nn.LeakyReLU的常见用法

    以下是使用nn.LeakyReLU的一些常见用法:

    1. 创建Leaky ReLU激活函数层:
    import torch.nn as nn
    
    # 创建一个Leaky ReLU激活函数层,斜率为0.2(可以根据需要进行调整)
    leaky_relu = nn.LeakyReLU(0.2)
    
    • 1
    • 2
    • 3
    • 4
    1. 对张量应用Leaky ReLU激活函数:
    import torch
    
    # 创建一个示例输入张量
    input_tensor = torch.tensor([-1.0, 2.0, -3.0, 4.0, -5.0])
    
    # 应用Leaky ReLU激活函数
    output_tensor = leaky_relu(input_tensor)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在上面的示例中,output_tensor将包含应用Leaky ReLU激活函数后的结果,其中负数部分被乘以了斜率0.2。

    使用Leaky ReLU激活函数的一个主要优势是它可以缓解梯度消失问题,特别是在深度神经网络中。我们可以根据实际问题和实验结果来调整斜率的值,以获得最佳性能。

    下面是使用示例:

    import torch
    import torch.nn as nn
    
    # 创建LeakyReLU激活函数层,默认的negative_slope是0.01
    leaky_relu = nn.LeakyReLU()
    
    # 示例输入张量
    input_tensor = torch.tensor([-1.0, 2.0, -3.0, 4.0, -5.0])
    
    # 应用Leaky ReLU激活函数
    output_tensor = leaky_relu(input_tensor)
    
    print(output_tensor)
    #输出结果
    #tensor([-0.0100,  2.0000, -0.0300,  4.0000, -0.0500])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    这将输出一个张量,其中负数部分被乘以了默认的 negative_slope 值0.01。

    3.LeakyReLU函数图像实现

    Leaky ReLU(Leaky Rectified Linear Unit)激活函数在非负数部分保持线性,而在负数部分引入一个小的斜率(负斜率)。这个斜率通常是一个小的正数,例如0.01。下面是Leaky ReLU函数的图像示例,其中斜率设置为0.01:

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 定义Leaky ReLU函数
    def leaky_relu(x, negative_slope=0.01):
        return np.where(x >= 0, x, negative_slope * x)
    
    # 生成输入值范围
    x = np.linspace(-5, 5, 100)
    
    # 计算Leaky ReLU的输出
    y = leaky_relu(x, negative_slope=0.01)
    
    # 绘制Leaky ReLU函数的图像
    plt.plot(x, y, label='Leaky ReLU (0.01)', color='b')
    plt.xlabel('Input')
    plt.ylabel('Output')
    plt.title('Leaky ReLU Activation Function')
    plt.axhline(0, color='black', linewidth=0.5, linestyle='--')
    plt.axvline(0, color='black', linewidth=0.5, linestyle='--')
    plt.legend()
    plt.grid(True)
    plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    运行此段代码,即可得到LeakyReLU函数图像
    在这里插入图片描述

    上述代码生成了Leaky ReLU激活函数的图像,其中斜率设置为0.01。在图像中,我们可以看到,在负数区域,函数引入了一个小的负斜率,而在非负数区域,函数保持线性,值等于输入值。这是Leaky ReLU激活函数的基本特点,它允许一些负数值通过,并且对于大部分正数值保持线性。

    我们可以通过更改negative_slope参数的值来调整Leaky ReLU函数的斜率,以满足不同需求。不同的斜率值会产生不同的非线性行为。

  • 相关阅读:
    Unity InputSystem 基础使用之鼠标交互
    SpringMVC(七):SpringMVC的响应处理
    神经网络计算相似度,神经网络对比
    DAY9-深度学习100例-循环神经网络(RNN)实现股票预测
    ceph集群的搭建
    Fastjson tomcat-dhcp链
    STM32-- GPIO->EXTI->NVIC中断
    云计算之虚拟化技术学习(KVM/Xen/Hyper-V/VMware)
    新版TCGA表达矩阵1行代码提取2.0版
    雷军:我的程序人生路
  • 原文地址:https://blog.csdn.net/thy0000/article/details/133654447