使用torch.nn.functional中的leaky_relu()实现神经网络隐藏层激活
发布时间:2023-12-24 04:43:10
在PyTorch中,可以使用torch.nn.functional中的leaky_relu()函数来实现神经网络的隐藏层激活函数。leaky_relu(x, negative_slope=0.01, inplace=False)函数将传入的张量x中的每个元素进行LeakyReLU(带泄露线性整流单元)操作。LeakyReLU函数是修正线性单元ReLU的一种改进,可以在输入为负时引入一个小的负斜率来避免神经元的“死亡”。
下面我们将使用leaky_relu()函数来实现一个简单的神经网络,其中包括一个隐藏层。
首先,导入PyTorch库和定义我们的神经网络类:
import torch
import torch.nn as nn
import torch.nn.functional as F
class MyNet(nn.Module):
def __init__(self):
super(MyNet, self).__init__()
self.fc1 = nn.Linear(10, 5)
self.fc2 = nn.Linear(5, 2)
def forward(self, x):
x = F.leaky_relu(self.fc1(x))
x = self.fc2(x)
return x
这里我们定义了一个包含两个线性层的神经网络,输入层维度为10,隐藏层维度为5,输出层维度为2。
接下来,我们创建一个实例并进行前向传播:
net = MyNet() input_data = torch.randn(1, 10) # 创建一个大小为1x10的输入张量 output = net(input_data) print(output)
在这个例子中,我们创建了一个大小为1x10的随机输入张量,并将其输入到我们定义的神经网络中。然后,我们打印输出张量,其中包含神经网络的预测结果。
输出:
tensor([[0.0147, 0.0042]], grad_fn=<AddmmBackward>)
这就是使用torch.nn.functional中的leaky_relu()实现神经网络隐藏层激活函数的例子。在forward()函数中,我们使用F.leaky_relu()函数对隐藏层的输出进行激活,然后将其传递给下一层。
