余姚网站建设的公司横店八上信息书做网站的内容
- 作者: 五速梦信息网
- 时间: 2026年04月20日 06:54
当前位置: 首页 > news >正文
余姚网站建设的公司,横店八上信息书做网站的内容,wordpress转为pdf,个人自媒体创意名字文章目录 搭建卷积神经网络一、数据预处理1. 下载数据集2. 创建DataLoader#xff08;数据加载器#xff09; 二、搭建神经网络三、训练数据四、优化模型 总结 搭建卷积神经网络 一、数据预处理
下载数据集 在PyTorch中#xff0c;有许多封装了很多与图像相关的模型、… 文章目录 搭建卷积神经网络一、数据预处理1. 下载数据集2. 创建DataLoader数据加载器 二、搭建神经网络三、训练数据四、优化模型 总结 搭建卷积神经网络 一、数据预处理
下载数据集 在PyTorch中有许多封装了很多与图像相关的模型、数据集那么如何获取数据集呢 导入datasets模块 from torchvision import datasets #封装了很多与图像相关的模型数据集以datasets模块中的MNIST数据集为例包含70000张手写数字图像60000张用于训练10000张用于测试。图像是灰度的28*28像素并且居中的以减少预处理和加快运行。 from torch.utils.data import DataLoader #数据包管理工具打包数据 from torchvision import datasets #封装了很多与图像相关的模型数据集 from torchvision.transforms import ToTensor # 数据转换张量将其他类型数据转换为tensor张量 —–下载训练集数据集—– training_data datasets.MNIST(rootdata,trainTrue,# 取训练集downloadTrue,transformToTensor(),# 张量图片是不能直接传入神经网络模型的 ) # 对于pytorch库能够识别的数据一般是tensor张量—–下载测试集数据集—– test_data datasets.MNIST(rootdata,trainFalse,downloadTrue,transformToTensor(), )# numpy数组只能在CPU上运行Tensor可以在GPU上运行这在深度学习中可以显著提高计算速度下载完成之后可在project栏查看。
创建DataLoader数据加载器 在PyTorch中创建DataLoader的主要作用是将数据集Dataset加载到模型中以便进行训练或推理。DataLoader通过封装数据集提供了一个高效、灵活的方式来处理数据。 DataLoader通过batch_size参数将数据集自动划分为多个小批次batch每一批次的放入模型训练减少内存的使用提高训练速度。 import torch from torch.utils.data import DataLoader创建数据DataLoader数据加载器 batch_size将数据集分成多份每一份为batch_size指定数值个数据。 优点减少内存的使用提高训练速度train_dataloder DataLoader(training_data,batch_size64)# 64张图片为一个包 test_datalodar DataLoader(test_data,batch_size64)
查看打包好的数据
for x,y in test_datalodar: #x是表示打包好的每一个数据包print(fShape of x [N, C, H, W]:{x.shape})print(fShape of y:{y.shape} {y.dtype})break
Shape of x [N, C, H, W]:torch.Size([64, 1, 28, 28]) Shape of y:torch.Size([64]) torch.int64二、搭建神经网络 注意同普通的神经网络不同卷积神经网络在传入图片时不需要将其展开因为对图片进行卷积就是在原图上进行内积不能展开。 卷积神经网络是由输入层、卷积层、激活层、池化层、全连接层、输出层组成。所以在结构上我们也同这样式的来但是可以搭建多层卷积哦 —判断当前设备是否支持GPU其中mps是苹果m系列芯片的GPU device cuda if torch.cuda.is_available() else mps if torch.backends.mps.is_available() else cpu—–定义神经网络—– class CNN(nn.Module):def init(self): # 输入大小12828super(CNN,self).init()self.conv1 nn.Sequential( # 将多个层组合在一起nn.Conv2d( # 2d一般用于图像3d用于视频数据多一个时间维度1d一般用于结构化的序列数据in_channels1, # 图像通道个数1表示灰度图确定卷积核 组中的个数out_channels16, # 要得到多少特征图卷积核的个数kernel_size5, # 卷积核大小stride1, # 步长padding2 # 边界填充大小), # 输出的特征图为162828–16个大小28*28的图像nn.ReLU(), # relu层不会改变特征图的大小nn.MaxPool2d(kernel_size2) # 进行池化操作2*2区域输出结果为161414)self.conv2 nn.Sequential( # 输入161414nn.Conv2d(16,32,5,1,2), # 输出32*14*14nn.ReLU(),nn.Conv2d(32,32,5,1,2), # 输出32*14*14nn.ReLU(),nn.MaxPool2d(2) # 输出3277)self.conv3 nn.Sequential( # 输入3277nn.Conv2d(32,64,5,1,2), # 输出6477nn.ReLU())self.out nn.Linear(64*7*7,10)def forward(self,x):x self.conv1(x)x self.conv2(x)x self.conv3(x) # 输出6477x x.view(x.size(0),-1) # flatten 操作结果为batch_size,64*7*7output self.out(x)return outputmodel CNN().to(device)三、训练数据 optimizer优化器 optimizer torch.optim.Adam(model.parameters(),lr0.001)loss_fn损失函数 在PyTorch中nn.CrossEntropyLoss()是一个常用的损失函数它结合了 nn.LogSoftmax() 和 nn.NLLLoss()负对数似然损失在一个单独的类中。 loss_fn nn.CrossEntropyLoss()训练集 from torch import nn #导入神经网络模块 def train(dataloader,model,loss_fn,optimizer):model.train()# 设置模型为训练模式batch_size_num 1# 迭代次数 for x,y in dataloader:x,y x.to(device),y.to(device) # 将数据和标签发送到指定设备 pred model.forward(x) # 前向传播 loss loss_fn(pred,y) # 计算损失 optimizer.zero_grad() # 清除之前的梯度 loss.backward() # 反向传播 optimizer.step() # 更新模型参数 loss_value loss.item() # 获取损失值if batch_size_num %200 0: # 每200次迭代打印一次损失 print(floss:{loss_value:7f} [number:{batch_size_num}])batch_size_num 1
train(train_dataloder,model,loss_fn,optimizer)
loss:0.158841 [number:200] loss:0.242431 [number:400] loss:0.173504 [number:600] loss:0.020542 [number:800]测试集 —–测试集—–
def test(dataloader,model,loss_fn):size len(dataloader.dataset)num_batches len(dataloader)model.eval()test_loss,correct 0,0with torch.no_grad():for x,y in dataloader:x,y x.to(device),y.to(device)pred model.forward(x)test_loss loss_fn(pred,y).item()correct (pred.argmax(1) y).type(torch.float).sum().item()a (pred.argmax(1) y)b (pred.argmax(1) y).type(torch.float)test_loss / num_batchescorrect / sizecorrect round(correct, 4)print(fTest result: \n Accuracy:{(100*correct)}%,Avg loss:{test_loss})test(test_datalodar,model,loss_fn)
Test result: Accuracy:98.11999999999999%,Avg loss:0.05511626677004996四、优化模型 通过多次迭代神经网络不断调整其内部参数如权重和偏置以最小化预测值与实际值之间的误差。这种优化过程使得神经网络能够更准确地处理输入数据提高分类、回归等任务的性能。 epochs 5 for t in range(epochs):print(fEpoch {t1} \n————————-)train(train_dataloder,model,loss_fn,optimizer) print(Done!) test(test_datalodar,model,loss_fn)输出结果
Epoch 1
loss:0.182339 [number:200] loss:0.229839 [number:400] loss:0.210450 [number:600] loss:0.028532 [number:800]
Epoch 2
loss:0.066216 [number:200] loss:0.149762 [number:400] loss:0.084482 [number:600] loss:0.003749 [number:800] ………… Done! Test result: Accuracy:98.99%,Avg loss:0.03138259953491878总结 本篇介绍了如何搭建卷积神经网络其主要的构造部分为卷积层、激活层以及池化层可以搭建多层该部分对数据进行多次卷积、池化。 注意同普通的神经网络不同卷积神经网络在传入图片时不需要将其展开因为对图片进行卷积就是在原图上进行内积不能展开。
- 上一篇: 余姚市住房和城乡建设局网站网站如何做脚注
- 下一篇: 余姚网站建设服务大佬做的魔法少女网站
相关文章
-
余姚市住房和城乡建设局网站网站如何做脚注
余姚市住房和城乡建设局网站网站如何做脚注
- 技术栈
- 2026年04月20日
-
余姚建设局网站南京网站制作搭建
余姚建设局网站南京网站制作搭建
- 技术栈
- 2026年04月20日
-
余江县建设局网站简述网站开发的基本原则
余江县建设局网站简述网站开发的基本原则
- 技术栈
- 2026年04月20日
-
余姚网站建设服务大佬做的魔法少女网站
余姚网站建设服务大佬做的魔法少女网站
- 技术栈
- 2026年04月20日
-
余姚网站建设公司山东川畅科技做网站多少钱
余姚网站建设公司山东川畅科技做网站多少钱
- 技术栈
- 2026年04月20日
-
余姚做网站62752762网站客户端制作多少钱
余姚做网站62752762网站客户端制作多少钱
- 技术栈
- 2026年04月20日
