尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
PyTorch 卷积神经网络
卷积神经网络卷积神经网络, 也就是CNN, 是深度学习模型的一种, 这类模型专门处理具有网格状拓扑结构的数据, 像图像就是这样的数据。计算机视觉任务, 像图像分类、目标检测以及分割, 其核心技术是CNN。就下面的这张图而言呢, 它去显现了一个典型的卷积神经网络, 也就是 CNN 的结构, 以及其工作流程, 此二者是用于图像识别任务的。当处于图里时, CNN的输出层面给予出了概率, 这概率是关于三个类别的, 其中一个类别概率为0.2, 另一个类别是Goofy概率为0.1, 余下一个类别概率为0.7, 而这情况表明网络思索着输入图像的可能性最大状态是。以下是各个部分的简要说明卷积神经网络的基本结构1、输入层Input Layer接收到原始的图像数据, 图像一般是以一个三维数组来进行表示的, 其中存在两个维度, 这两个维度分别是用以表示图像的宽度以及像的高度, 而第三个维度是用来代表颜色通道的, 比如RGB图像所具有的颜色通道数量是三个。2、卷积层 Layer用卷积核提取局部特征如边缘、纹理等。公式将一组能够进行学习的滤波器, 也就是卷积核, 运用在输入的图像上, 开展卷积操作, 以此来提取局部方面的特征。滤波器于输入图像之上滑动, 进而生成了一个可以表示滤波器于不同位置激活情况的特征图Map。这是一个卷积层这个卷积层能有好多滤波器, 这些滤波器中的任意一个, 都能生成一个特征图, 而产生的所有特征图, 会共同组成一个特征图集合。3、激活函数 在卷积层之后, 一般会应用非线性激活函数, 像是 ReLU Unit, 以便引入非线性特性, 进而让网络能够学习更为复杂的模式。ReLU函数的定义是这样的, 具体说来, 它是f(x)max(0,x), 也就是说, 一旦输入小于0, 那么输出的便会是0, 不然呢, 不然输出的就是输入值了。4、池化层 Layer5、归一化层 Layer可选6、全连接层Fully Layer7、输出层 Layer根据任务的不同输出层可以有不同的形式。通常在分类任务当中, 会运用函数把输出转化成概率分布, 以此来呈现输入归属于各个类别的概率。8、损失函数Loss 用于衡量模型预测与真实标签之间的差异。有种常见的损失函数, 其中交叉熵损失也就是Cross⁃ Loss, 它被用于多分类任务中来使用, 还有均方误差也就是Mean Error且简称为MSE的这种情况, 它是被用在回归任务之中的。9、优化器更新网络权重, 是依据损失函数的梯度来进行的。常见的优化器含随机梯度下降, 也就是SGD、Adam等。10、正则化可选包括 、L1/L2 正则化等技术用于防止模型过拟合。这些层可以堆叠形成更深的网络结构以提高模型的学习能力。CNN 的深度和复杂性可以根据任务的需求进行调整。实现一个 CNN 实例以下示例呈现, 怎样运用, 去搭建, 一个简易的, CNN 模型, 以供对 MNIST 数据集, 进行数字分类, 所使用, 的方式。主要步骤1、导入必要库import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim2、数据加载使用 提供的 MNIST 数据集加载和预处理数据。实例 .(.(), # 转为张量.((0.5,), (0.5,)) # 归一化到-1, 1# 加载 MNIST 数据集你提供的内容似乎不太完整且存在格式问题, 不太能明确其确切意思并准确改写。请你检查或补充完整准确的内容以便我能更好地为你改写。这句代码似乎不太完整且格式有误, 不太能按照需求准确改写。请提供完整正确的代码句子以便重新进行改写。你提供的内容不太完整且难以理解其确切含义, 不太便于进行准确改写。请补充完整清晰的内容以便我更好完成任务。这段内容似乎不太清晰且包含错误表述, 不太能准确理解其确切含义并进行有效改写。请你检查或补充完整准确的内容。3、定义 CNN 模型使用 nn. 构建一个 CNN。实例class (nn.):def (self):super(, self).()# 定义卷积层输入1通道输出32通道卷积核大小3x3# 定义卷积层输入32通道输出6N通道self.conv2等于nn, 其中参数为32, 64, 卷积核大小为3, 步长为1, 填充为1。# 定义全连接层设置 self.fc1 为 nn., 其参数为(64 乘以 7 乘以 7, 128) , 这里输入大小等于特征图大小乘以通道数。self.fc2等于nn, nn是(128, 10), 这里的10代表着10个类别。def (self, x):将x赋值为, 对x进行第一层卷积操作后, 再应用 F.relu函数的结果 , 这是第一层卷积加上 ReLU操作。x F.(x, 2) # 最大池化x等于, F的relu函数作用于, self的conv2函数作用于x的结果, 这是第二层卷积与ReLU的操作。x F.(x, 2) # 最大池化进行展平操作, x等于x.view, 其参数为负一, 以及64乘以7乘以7。x等于, F的relu函数作用于, 将x输入到, self的fc1函数后得到的结果, 这里是全连接层加上ReLU。先是有这么个变量“x”, 接下来, 它等于“self.fc2”作用于“x”时所产生的结果, 而这一结果, 是全连接层的输出。x# 创建模型实例model ()4、定义损失函数与优化器使用交叉熵损失和随机梯度下降优化器。criterion nn.CrossEntropyLoss() # 多分类交叉熵损失 optimizer optim.SGD(model.parameters(), lr0.01, momentum0.9) # 学习率和动量5、训练模型将模型进行训练, 历经5个 epoch, 在每一个 epoch完成之后, 把训练当中产生的损失给输出出来。实例 5model.train() # 设为训练模式for epoch in range(): 0for , in :# 前向传播 model()loss (, )# 反向传播.()loss.().step() loss.item()print(fEpoch{epoch1}/{}, Loss: { / len():.4f})6、测试模型在测试集上评估模型的准确率。实例model.eval() # 设置为评估模式 0total 0with torch.(): # 评估时不需要计算梯度for , in : model()_, torch.max(, 1) # 预测类别total .size(0) ( ).sum().item() 100 * / totalprint(fTest : {:.2f}%)7、完整代码完整代码如下实例torchtorch.nn as nntorch.nn. as Ftorch.optim as optimfrom ,# 1. 数据加载与预处理 .(.(), # 转为张量.((0.5,), (0.5,)) # 归一化到-1, 1# 加载 MNIST 数据集 .MNIST(root./data, trainTrue, , True) .MNIST(root./data, trainFalse, , True) torch.utils.data.(, 64, True) torch.utils.data.(, 64, False)# 2. 定义 CNN 模型class (nn.):def (self):super(, self).()# 定义卷积层自卷积2等于神经网络模块, 其参数为32, 64, 卷积核大小为3, 步长为11, 填充为11, 输入通道数为32, 输出通道数为6N通道。# 定义全连接层elf.fc1被设定为nn., 其参数为(64 * 7 * 7, 128) , 用于展平后输入到全连接层。self.fc2 nn.(128, 10) # 10 个类别def (self, x):x F.relu(self.conv1(x)) # 第一层卷积 ReLUx F.(x, 2) # 最大池化x F.relu(self.conv2(x)) # 第二层卷积 ReLUx F.(x, 2) # 最大池化x F.relu(self.fc1(x)) # 全连接层 ReLUx 等于, 取自自身的 fc2 作用于 x 的值, 此为最后一层输出。x# 创建模型实例model ()# 3. 定义损失函数与优化器 nn.() # 多分类交叉熵损失# 4. 模型训练 5model.train() # 设置模型为训练模式for epoch in range(): 0for , in : model() # 前向传播loss (, ) # 计算损失.() # 清空梯度loss.() # 反向传播.step() # 更新参数 loss.item()print(fEpoch{epoch1}/{}, Loss: { / len():.4f})# 5. 模型测试model.eval() # 设置模型为评估模式 0total 0with torch.(): # 关闭梯度计算for , in : model()_, torch.max(, 1)total .size(0) ( ).sum().item() 100 * / totalprint(fTest : {:.2f}%)运行结果说明1. 输出的训练损失代码中每个 epoch 会输出一次平均损失例如Epoch [1/5], Loss: 0.2325 Epoch [2/5], Loss: 0.0526 Epoch [3/5], Loss: 0.0366 Epoch [4/5], Loss: 0.0273 Epoch [5/5], Loss: 0.0221解释损失逐渐下降表明模型在逐步收敛。2. 测试集的准确率代码在测试集上输出最终的分类准确率例如Test Accuracy: 98.96%先说, 模型针对MNIST测试集的分类准确率有着98.96%, 再说, 这对于简单的CNN模型来讲算是一个不错的结果。7、可视化结果我们可以在测试数据中可视化一些样本及其预测结果。实例torchtorch.nn as nntorch.nn. as Ftorch.optim as optimfrom ,. as plt# 1. 数据加载与预处理 .(.(), # 转为张量.((0.5,), (0.5,)) # 归一化到-1, 1# 加载 MNIST 数据集 .MNIST(root./data, trainTrue, , True) .MNIST(root./data, trainFalse, , True) torch.utils.data.(, 64, True) torch.utils.data.(, 64, False)# 2. 定义 CNN 模型class (nn.):def (self):super(, self).()# 定义卷积层self.conv1 nn.(1, 32, 3, 1, 1) # 输入1通道输出32通道self.conv2 nn.(32, 64, 3, 1, 1) # 输入32通道输出6N通道# 定义全连接层self.fc1 nn.(64 * 7 * 7, 128) # 展平后输入到全连接层self.fc2 nn.(128, 10) # 10 个类别def (self, x):x F.relu(self.conv1(x)) # 第一层卷积 ReLUx F.(x, 2) # 最大池化x F.relu(self.conv2(x)) # 第二层卷积 ReLUx F.(x, 2) # 最大池化x x.view(-1, 64 * 7 * 7) # 展平x F.relu(self.fc1(x)) # 全连接层 ReLUx self.fc2(x) # 最后一层输出x# 创建模型实例model ()# 3. 定义损失函数与优化器 nn.() # 多分类交叉熵损失 optim.SGD(model.(), lr0.01, 0.9)# 4. 模型训练 5model.train() # 设置模型为训练模式for epoch in range(): 0for , in : model() # 前向传播loss (, ) # 计算损失.() # 清空梯度loss.() # 反向传播.step() # 更新参数 loss.item()print(fEpoch{epoch1}/{}, Loss: { / len():.4f})# 5. 模型测试model.eval() # 设置模型为评估模式 0total 0with torch.(): # 关闭梯度计算for , in : model()_, torch.max(, 1)total .size(0) ( ).sum().item() 100 * / totalprint(fTest : {:.2f}%)# 6. 可视化测试结果 iter(), next() model()_, torch.max(, 1)for i in range(6):axes.(, cmapgray)axes.(fLabel: {}\nPred: {})axes.axis(off)plt.show()可视化结果展示了 6 个测试样本的实际标签与预测值例如注意几种错误在下载MNIST数据集这个行为发生之时, 因SSL证书验证是失败的这种状况, 致使没办法去下载数据。Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz Failed to download (trying next): ...解决办法打开终端运行以下命令来安装/更新 SSL 证书/Applications/Python\ 3.x/Install\ Certificates.command其中 3.x 替换为你实际安装的 版本。运行这个命令之后, 再次运行你 的、代码, 此代码应能够成功地、下载MNIST数据集。
RELATED

相关推荐

SEIR模型数值预测实战:从微分方程到流行病传播推演

SEIR模型数值预测实战:从微分方程到流行病传播推演

1. 项目概述:从“黑箱”到“推演”,SEIR模型如何成为预测利器在公共卫生、流行病学乃至信息传播分析领域,我们常常面临一个核心挑战:如何对一个动态发展的过程进行量化预测?是拍脑袋凭感觉,还是依赖事后诸葛…

📅 2026/11/11 19:05:34
Python执行流程和入口

Python执行流程和入口

先前,我们将一些代码予以运行, 那是在配置解释器以及虚拟环境的进程当中, 然而, 在正式对语法展开介绍之前, 我打算介绍一下程序的结构。希望大家明白两个方面, 其一, 代码是如何去运行的, 其二, 脚本程序的起始点处于何处。如果你已经明白了这两点,可以…

📅 2026/10/26 7:53:57
DeepSeek代码Agent实战:从API接入到批量任务全攻略

DeepSeek代码Agent实战:从API接入到批量任务全攻略

这次我们不聊概念,直接看怎么把 DeepSeek 模型用成你自己的代码 Agent,接住 Claude Code 干不了的活儿。如果你一直盯着 Claude Code 这类终端编程助手,又因为 API 成本、模型可控性、私有化部署这些原因想找替代路线,那 DeepSeek…

📅 2026/10/8 3:29:57
MORE NEWS

更多资讯

📰

安监局电工证考试流程全流程办理指南多久拿证

安监局电工证考试流程全流程办理指南多久拿证 证书过期了不知道怎么复审延期?别急,今天就来带你走一遍【安监局电工证考试流程】,从报名到拿证一网打尽,让你知道 多久拿证…

📰

办理办电工证需多少钱需要什么材料

电工证多少钱能办下来?考前押题真的靠谱吗? 怕考不过白交培训费,这事儿我太懂了。去年我认识的一个河南信阳的房建电工,花了几千块报了个培训班,结果考试没过,钱打了水漂,连个复审的机会都没捞着。所以, 办电工证需多少钱…

📰

安监局电工证考试流程在哪考 外省证书能否转过来

安监局电工证考试流程在哪考 外省证书能否转过来 之前考的证在外省能不能转过来?这是很多从业人员最关心的问题,尤其是像你这样在驻马店从事房建工程的朋友,可能手里拿着外地的电工证,担心在本地用不了。别急,这篇文章就围绕【安监局电工证考试流程】,…

📰

诸暨考电工证上哪通过率揭秘:转岗电工怎么高效取证

诸暨考电工证上哪通过率揭秘:转岗电工怎么高效取证 你是不是正愁没电工证,找不到工作?别急,这篇就告诉你【诸暨考电工证上哪】,还有通过率揭秘,帮你少走弯路。…

📰

广西电工证理论考什么内部消息来了!找工作必须知道的细节

广西电工证理论考什么内部消息来了!找工作必须知道的细节 你有没有过这样的经历?手里拿着一堆简历,但就是找不到合适的岗位,原因很简单—— 没有特种作业证…

📰

电工作业危险有害因素怎么避坑?全国通用证书这样考

电工作业危险有害因素怎么避坑?全国通用证书这样考 你是不是也跟朋友聊起特种作业证时,心里直打鼓?不知道去哪报名怕被中介坑,更怕拿了个假证耽误前程。电工作业危险有害因素多,证书要是没考对,连基本的岗位都进不去。别急,下面给你说说全国通用证书怎…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬