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激活函数。

import torch as t
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-100,100,1000)
y=t.nn.functional.relu(t.tensor(x,dtype=t.float32)).numpy()
plt.plot(x,y)
plt.title("relu")
plt.xlabel("x")
plt.ylabel("relu(x)")
plt.grid(True)
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激活函数。

import torch as t
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-100,100,1000)
y=t.nn.functional.relu6(t.tensor(x,dtype=t.float32)).numpy()
plt.plot(x,y)
plt.title("relu6")
plt.xlabel("x")
plt.ylabel("relu6(x)")
plt.grid(True)
plt.show()

3、leaky_relu

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

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

import torch as t
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-100,100,1000)
y=t.nn.functional.leaky_relu(t.tensor(x,dtype=t.float32)).numpy()
plt.plot(x,y)
plt.title("leaky_relu")
plt.xlabel("x")
plt.ylabel("leaky_relu(x)")
plt.grid(True)
plt.show()
​

4、ELU

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

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

import torch as t
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-100,100,1000)
elu=t.nn.ELU()
y=elu(t.tensor(x,dtype=t.float32)).data.numpy()
plt.plot(x,y)
plt.title("ELU")
plt.xlabel("x")
plt.ylabel("ELU(x)")
plt.grid(True)
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。

import torch as t
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-100,100,1000)
selu=t.nn.SELU()
y=selu(t.tensor(x,dtype=t.float32)).data.numpy()
plt.plot(x,y)
plt.title("SELU")
plt.xlabel("x")
plt.ylabel("SELU(x)")
plt.grid(True)
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的实例。

import torch as t
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(-100,100,1000)
prelu=t.nn.PReLU()
y=prelu(t.tensor(x,dtype=t.float32)).data.numpy()
plt.plot(x,y)
plt.title("PReLU")
plt.xlabel("x")
plt.ylabel("PReLU(x)")
plt.grid(True)
plt.show()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值