📜  PyTorch中的torch.nn(1)

📅  最后修改于: 2023-12-03 15:19:37.221000             🧑  作者: Mango

PyTorch中的torch.nn

PyTorch是一个基于Python的机器学习库,是一个能够实现动态神经网络的框架。在PyTorch中,torch.nn是一个重要的模块,它提供了神经网络的构建和训练所需的各种类和方法。在这篇文章中,我们将向您介绍PyTorch中的torch.nn。

torch.nn中的类

PyTorch中torch.nn提供了许多有用的类来构建和训练神经网络,例如:

nn.Module

nn.Module是一个抽象类,其他所有NN层和模型都继承自它。它具有保存和加载网络的方法,并为所有子模块生成预测的前向方法。一个网络的所有层都应该包含在nn.Module的子类中。

import torch.nn as nn

class Net(nn.Module):
    def __init__(self):
        super(Net, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 50, 5)
        self.fc1 = nn.Linear(4*4*50, 500)
        self.fc2 = nn.Linear(500, 10)

    def forward(self, x):
        x = F.relu(self.conv1(x))
        x = F.max_pool2d(x, 2, 2)
        x = F.relu(self.conv2(x))
        x = F.max_pool2d(x, 2, 2)
        x = x.view(-1, 4*4*50)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x
nn.Sequential

nn.Sequential是一个有序的容器,其中包含一些子模块。当调用Sequential的forward方法时,每个子模块的forward方法将按照它们添加的顺序依次被调用。

import torch.nn as nn

model = nn.Sequential(
            nn.Conv2d(1, 20, 5),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),
            nn.Conv2d(20, 50, 5),
            nn.ReLU(),
            nn.MaxPool2d(2, 2),
            nn.Flatten(),
            nn.Linear(4*4*50, 500),
            nn.ReLU(),
            nn.Linear(500, 10)
        )
nn.Conv2d

nn.Conv2d创建一个卷积神经网络层。

import torch.nn as nn

conv_layer = nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, stride=1, padding=1)
nn.Linear

nn.Linear创建一个全连接层。

import torch.nn as nn

linear_layer = nn.Linear(in_features=512, out_features=10)
nn.Dropout

nn.Dropout是一个正则化方法,可以在训练过程中随机丢弃输出特征值。

import torch.nn as nn

dropout_layer = nn.Dropout(p=0.5)
torch.nn中的函数

除了类,torch.nn还提供了许多有用的函数来构建和训练神经网络。

nn.functional.relu

nn.functional.relu是一个用于实现整流线性单元(ReLU)的函数。

import torch.nn.functional as F

x = torch.randn(2, 3)
x = F.relu(x)
nn.functional.max_pool2d

nn.functional.max_pool2d是一个用于实现最大池化的函数。

import torch.nn.functional as F

x = torch.randn(2, 3, 4, 4)
x = F.max_pool2d(x, kernel_size=2, stride=2)
nn.functional.cross_entropy

nn.functional.cross_entropy计算交叉熵损失。

import torch.nn.functional as F

output = model(input)
loss = F.cross_entropy(output, target)
nn.functional.softmax

nn.functional.softmax计算softmax函数。

import torch.nn.functional as F

output = model(input)
probability = F.softmax(output, dim=1)
nn.functional.dropout

nn.functional.dropout是用于实现随机丢弃输出特征值的函数。

import torch.nn.functional as F

x = torch.randn(2, 3)
x = F.dropout(x, p=0.5, training=True)
结论

在此,我们已经介绍了PyTorch中的torch.nn模块,其中包括有用的类和函数。这些工具可以用来方便地构建和训练神经网络。我们建议您在实践中使用它们,以深入了解它们的用法。