PyTorch入门学习(十一):神经网络-线性层及其他层介绍

一、简介

神经网络是由多个层组成的,每一层都包含了一组权重和一个激活函数。每层的作用是将输入数据进行变换,从而最终生成输出。线性层是神经网络中的基本层之一,它执行的操作是线性变换,通常表示为:

css 复制代码
y = Wx + b

其中,y 是输出,x 是输入,W 是权重矩阵,b 是偏置。线性层将输入数据与权重矩阵相乘,然后加上偏置,得到输出。线性层的主要作用是进行特征提取和数据的线性组合。

二、PyTorch 中的线性层

在 PyTorch 中,线性层可以通过 torch.nn.Linear 类来实现。下面是一个示例,演示如何创建一个简单的线性层:

python 复制代码
import torch
from torch.nn import Linear

# 创建一个线性层,输入特征数为 3,输出特征数为 2
linear_layer = Linear(3, 2)

在上面的示例中,首先导入 PyTorch 库,然后创建一个线性层 linear_layer,指定输入特征数为 3,输出特征数为 2。该线性层将对输入数据执行一个线性变换。

三、示例:使用线性层构建神经网络

现在,接下来看一个示例,如何使用线性层构建一个简单的神经网络,并将其应用于图像数据。我们使用 PyTorch 和 CIFAR-10 数据集,这是一个广泛使用的图像分类数据集。

python 复制代码
import torch
from torch import nn
from torch.nn import Linear
from torch.utils.data import DataLoader
import torchvision.datasets

# 加载 CIFAR-10 数据集
dataset = torchvision.datasets.CIFAR10("D:\\Python_Project\\pytorch\\dataset2", train=False, transform=torchvision.transforms.ToTensor(), download=True)
dataloader = DataLoader(dataset, batch_size=64)

# 定义一个简单的神经网络
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init()
        self.linear1 = Linear(196608, 10)

    def forward(self, x):
        x = x.view(x.size(0), -1)  # 将输入数据展平
        x = self.linear1(x)
        return x

# 创建模型实例
model = MyModel()

# 遍历数据集并应用模型
for data in dataloader:
    imgs, targets = data
    outputs = model(imgs)
    print(outputs.shape)

在上面的示例中,首先加载 CIFAR-10 数据集,然后定义了一个简单的神经网络 MyModel,其中包含一个线性层。我们遍历数据集并将输入数据传递给模型,然后打印输出的形状。

四、常见的其他层

除了线性层,神经网络中还有许多其他常见的层,例如卷积层(Convolutional Layers)、池化层(Pooling Layers)、循环层(Recurrent Layers)等。这些层在不同类型的神经网络中起到关键作用。例如,卷积层在处理图像数据时非常重要,循环层用于处理序列数据,池化层用于减小数据维度。在 PyTorch 中,这些层都有相应的实现,可以轻松地构建不同类型的神经网络。

参考资料:

视频教程:PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】

相关推荐
red_redemption23 分钟前
自由学习记录(210)
学习
MartinYeung51 小时前
[论文学习]PACT:溯源感知能力合约——面向智能体安全的参数级溯源
人工智能·学习·安全
余俊晖2 小时前
多模态大模型细粒度视觉理解:Vision-OPD在线策略自蒸馏技术方案概述
人工智能·深度学习·算法·多模态·opd
大伟先生2 小时前
OpenClaw 数据采集实战入门
人工智能·深度学习
小O的算法实验室2 小时前
AAAI-26,全局相关性学习:通过谱图神经网络增强进化算法
神经网络·学习·算法
宁风NF2 小时前
JavaScript:网络请求与前端通信
开发语言·前端·javascript·网络·学习·ecmascript
skywalk81633 小时前
经过多次尝试,在kaggle 双T4训练Qwen2.5-0.5B的正确打开方式是:
人工智能·深度学习·机器学习·qwen2.5·段言
神神道呵he3 小时前
[深度学习] 大模型学习-RAG技术全景解析
人工智能·深度学习·学习
AI街潜水的八角3 小时前
菌落微生物检测和识别2:基于深度学习YOLO26神经网络实现菌落微生物检测和识别(含训练代码和数据集)
人工智能·深度学习·神经网络
MartinYeung54 小时前
[论文学习]AgentSafetyBench:大语言模型智能体安全评估基准深度分析
学习·安全·语言模型