news 2026/6/10 19:39:41

多层感知机与正则化技术:高级API实现多层感知机

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多层感知机与正则化技术:高级API实现多层感知机

多层感知机的简洁实现

学习目标

通过本课程,学员将了解到如何更简洁地实现多层感知机,具体来说,学员会学习使用高级API更简洁地实现多层感知机、多层感知机的实现与softmax回归的实现相比增加了带有激活函数的隐藏层、以及如何将与模型架构有关的内容独立出来等重要内容。

相关知识点

  • 多层感知机简洁实现

学习内容

1 多层感知机简洁实现

本课程将介绍通过高级API更简洁地实现多层感知机
首先,我们使用PyTorch的torch库,并引入必要的模块,如nn(神经网络模块)和d2l(用于简化代码的工具库)。

%pip install d2l==0.17.6--no-deps
importtorchfromtorchimportnnimporttorchvisionfromtorch.utilsimportdatafromtorch.utils.dataimportDataLoaderfromtorchvisionimporttransformsfromd2limporttorchasd2l
1.1 构建模型

与softmax回归的简洁实现相比,
唯一的区别是我们添加了2个全连接层(之前只添加了1个全连接层)。

第一层是隐藏层,它包含256个隐藏单元,并使用了ReLU激活函数。ReLU(Rectified Linear Unit)激活函数用于引入非线性,使得模型能够学习更复杂的模式。
第二层是输出层。用于生成最终的分类结果。
接下来,我们定义一个权重初始化函数init_weights,用于初始化模型中的线性层权重。这里我们使用正态分布初始化权重,标准差设为0.01。
然后,我们使用net.apply(init_weights)将初始化函数应用到模型的所有层。

net=nn.Sequential(nn.Flatten(),nn.Linear(784,256),nn.ReLU(),nn.Linear(256,10))definit_weights(m):iftype(m)==nn.Linear:nn.init.normal_(m.weight,std=0.01)net.apply(init_weights);
1.2 训练过程

训练过程的实现与我们实现softmax回归时完全相同,这种模块化设计使我们能够将与模型架构有关的内容独立出来。
我们设置批量大小batch_size为256,学习率lr为0.1,训练轮数num_epochs为10。损失函数使用交叉熵损失CrossEntropyLoss,优化器使用随机梯度下降SGD

batch_size,lr,num_epochs=256,0.1,10loss=nn.CrossEntropyLoss(reduction='none')trainer=torch.optim.SGD(net.parameters(),lr=lr)

然后,我们加载Fashion-MNIST数据集,并开始训练模型。

# 下载数据!wget https://model-community-picture.obs.cn-north-4.myhuaweicloud.com/ascend-zone/notebook_datasets/f3c4da6614e611f0b571fa163edcddae/FashionMNIST.zip
!unzip FashionMNIST.zip
# 通过ToTensor实例将图像数据从PIL类型变换成32位浮点数格式,# 并除以255使得所有像素的数值均在0~1之间trans=transforms.ToTensor()mnist_train=torchvision.datasets.FashionMNIST(root="./data",train=True,transform=trans,download=False)mnist_test=torchvision.datasets.FashionMNIST(root="./data",train=False,transform=trans,download=False)
# 使用 DataLoader 实现分批次加载train_iter=DataLoader(mnist_train,batch_size=batch_size,shuffle=True)test_iter=DataLoader(mnist_test,batch_size=batch_size,shuffle=False)
d2l.train_ch3(net,train_iter,test_iter,loss,num_epochs,trainer)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:03:56

PCB设计规则下阻抗匹配原理图解说明

高速PCB设计中的阻抗匹配:从原理到实战的完整指南你有没有遇到过这样的情况?电路板明明电气连通没问题,元器件也焊得规整,可高速信号就是“抽风”——眼图闭合、误码频发、EMI超标。调试几天下来一头雾水,最后发现罪魁…

作者头像 李华
网站建设 2026/6/10 19:31:01

跨平台应用测试:一次编写,多端运行?

理想与现实的鸿沟 "Write Once, Run Anywhere"——这个自Java时代诞生的技术梦想,在移动互联网时代被赋予了新的内涵。随着React Native、Flutter、Electron等跨平台框架的普及,开发效率得到指数级提升。然而对于测试从业者而言,这…

作者头像 李华
网站建设 2026/6/10 11:45:29

PyTorch-CUDA-v2.9镜像助力金融反欺诈模型迭代

PyTorch-CUDA-v2.9镜像助力金融反欺诈模型迭代 在现代金融系统中,欺诈行为的演化速度正以前所未有的节奏加快。从伪装成正常交易的资金清洗,到利用AI生成虚假身份进行信贷套现,攻击手段日益复杂且高度隐蔽。面对这种“猫鼠游戏”,…

作者头像 李华
网站建设 2026/6/10 11:28:33

Windows右键菜单精准优化:从诊断到深度管理的完整方案

Windows右键菜单精准优化:从诊断到深度管理的完整方案 【免费下载链接】ContextMenuManager 🖱️ 纯粹的Windows右键菜单管理程序 项目地址: https://gitcode.com/gh_mirrors/co/ContextMenuManager 还在为右键菜单中那些看似有用实则无用的选项而…

作者头像 李华
网站建设 2026/6/10 19:19:30

ASPEED平台下OpenBMC电源控制功能核心要点

ASPEED平台下OpenBMC电源控制机制深度解析:从硬件到服务的全链路实践你有没有遇到过这样的场景:远程机房的一台服务器“假死”,SSH连不上,KVM也无响应,唯一能救场的就是——让BMC远程断电再重启?这看似简单…

作者头像 李华
网站建设 2026/6/10 12:37:29

PyTorch-CUDA-v2.9镜像更新日志:性能优化与漏洞修复

PyTorch-CUDA-v2.9镜像更新:性能跃升与稳定性重塑 在AI研发的日常中,最让人头疼的往往不是模型调参,而是环境配置——“在我机器上明明能跑”的尴尬屡见不鲜。尤其是当项目涉及PyTorch、CUDA驱动、cuDNN版本兼容性时,动辄数小时的…

作者头像 李华