• pytorch之relu激活函数


    目录

    1、relu

    2、relu6

    3、leaky_relu

    4、ELU

    5、SELU

    6、PReLU


    1、relu

    ReLU(Rectified Linear Unit)是一种常用的神经网络激活函数,它在PyTorch中被广泛使用。ReLU函数接受一个输入值,如果该值大于零,则返回该值;否则返回零。

    在PyTorch中,可以使用torch.relu()函数来应用ReLU激活函数。

    1. import torch as t
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. x=np.linspace(-100,100,1000)
    5. y=t.nn.functional.relu(t.tensor(x,dtype=t.float32)).numpy()
    6. plt.plot(x,y)
    7. plt.title("relu")
    8. plt.xlabel("x")
    9. plt.ylabel("relu(x)")
    10. plt.grid(True)
    11. plt.show()

    2、relu6

    PyTorch中的ReLU6激活函数是一种常用的激活函数,其形式为f(x) = min(max(0, x), 6)。该函数将输入x限制在0和6之间,小于0的值会被截断为0,大于6的值会被截断为6。ReLU6激活函数可以帮助提高模型的非线性表达能力,并且具有较好的稳定性和抗饱和性。在PyTorch中,可以通过torch.nn.ReLU6()函数来使用ReLU6激活函数。

    1. import torch as t
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. x=np.linspace(-100,100,1000)
    5. y=t.nn.functional.relu6(t.tensor(x,dtype=t.float32)).numpy()
    6. plt.plot(x,y)
    7. plt.title("relu6")
    8. plt.xlabel("x")
    9. plt.ylabel("relu6(x)")
    10. plt.grid(True)
    11. plt.show()

    3、leaky_relu

    leaky_relu是PyTorch中的一种激活函数,用于引入非线性特性。它与传统的ReLU(修正线性单元)相似,但在负数输入时不会完全变为零,而是保留一个小的负斜率。这有助于避免“死亡神经元”,即在训练过程中停止响应的神经元。

    在PyTorch中,可以使用torch.nn.functional模块中的leaky_relu函数来使用leaky_relu激活函数。

    1. import torch as t
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. x=np.linspace(-100,100,1000)
    5. y=t.nn.functional.leaky_relu(t.tensor(x,dtype=t.float32)).numpy()
    6. plt.plot(x,y)
    7. plt.title("leaky_relu")
    8. plt.xlabel("x")
    9. plt.ylabel("leaky_relu(x)")
    10. plt.grid(True)
    11. plt.show()

    4、ELU

    在PyTorch中,ELU(Exponential Linear Unit)激活函数是一种常用的非线性激活函数。它通过将输入值指数化,然后对负输入进行缩放,以实现更好的性能。

    在PyTorch中,可以使用torch.nn.ELU模块来实现ELU激活函数。

    1. import torch as t
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. x=np.linspace(-100,100,1000)
    5. elu=t.nn.ELU()
    6. y=elu(t.tensor(x,dtype=t.float32)).data.numpy()
    7. plt.plot(x,y)
    8. plt.title("ELU")
    9. plt.xlabel("x")
    10. plt.ylabel("ELU(x)")
    11. plt.grid(True)
    12. plt.show()

    5、SELU

    SELU(Scaled Exponential Linear Units)是一种激活函数,常用于神经网络中。

    在PyTorch中,可以使用torch.nn.functional.selu()函数来实现SELU函数的运算。SELU函数的定义为:

    SELU(x) = scale * (max(0, x) + min(0, alpha * (exp(x) - 1)))

    其中,scale和alpha是两个可调的参数。通常情况下,scale的值取1.0507,alpha的值取1.6733。

    1. import torch as t
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. x=np.linspace(-100,100,1000)
    5. selu=t.nn.SELU()
    6. y=selu(t.tensor(x,dtype=t.float32)).data.numpy()
    7. plt.plot(x,y)
    8. plt.title("SELU")
    9. plt.xlabel("x")
    10. plt.ylabel("SELU(x)")
    11. plt.grid(True)
    12. plt.show()

    6、PReLU

    PReLU(Parametric Rectified Linear Unit)是一种用于人工神经网络中的激活函数,可用于解决梯度消失和神经元死亡等问题。PReLU与ReLU(Rectified Linear Unit)类似,但具有可调参数。

    PReLU的数学表达式如下:

    f(x) = max(0, x) + a * min(0, x)

    其中,x为输入,a为可调参数。当a=0时,PReLU即为传统的ReLU函数。

    PReLU的优势在于它可以允许负值通过,使得神经元可以接收更丰富的信息。同时,通过调整参数a,可以控制负值部分的斜率,从而提供更大的模型灵活性。

    在PyTorch中,可以使用torch.nn.PReLU()来创建一个PReLU的实例。

    1. import torch as t
    2. import matplotlib.pyplot as plt
    3. import numpy as np
    4. x=np.linspace(-100,100,1000)
    5. prelu=t.nn.PReLU()
    6. y=prelu(t.tensor(x,dtype=t.float32)).data.numpy()
    7. plt.plot(x,y)
    8. plt.title("PReLU")
    9. plt.xlabel("x")
    10. plt.ylabel("PReLU(x)")
    11. plt.grid(True)
    12. plt.show()

  • 相关阅读:
    Tomcat运行日志乱码问题/项目用tomcat启动时窗口日志乱码
    Soft:Eric软件界面的简介、案例应用之详细攻略
    猿创征文|【C++之new和delete运算符】创建数组
    sam和mobilesam导出onnx的问题
    【软考软件评测师】第二十六章 计算机安全设计(其他知识)
    排序8: 计数排序
    《uni-app》一个非canvas的飞机对战小游戏实现-碰撞检测的实现
    22.10.29 CF-1294C
    基于el-select简单封装一个组件
    ROS为机器人装配激光雷达
  • 原文地址:https://blog.csdn.net/T20151470/article/details/134278571