欢迎访问宙启技术站
智能推送

使用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()函数对隐藏层的输出进行激活,然后将其传递给下一层。