当前位置: 首页 > news >正文

网站建设与运营 试题屏蔽收索引擎抓取网站

网站建设与运营 试题,屏蔽收索引擎抓取网站,成都住房和城乡建设局 网站,十大最坑装修公司排名作为深度学习小白#xff0c;我想把自己学习的过程记录下来#xff0c;作为实践部分#xff0c;我会写一个通用框架#xff0c;并会不断完善这个框架#xff0c;作为自己的入门学习。因此略过环境搭建和基础知识的步骤#xff0c;直接从代码实战开始。 一.下载数据集并加…作为深度学习小白我想把自己学习的过程记录下来作为实践部分我会写一个通用框架并会不断完善这个框架作为自己的入门学习。因此略过环境搭建和基础知识的步骤直接从代码实战开始。 一.下载数据集并加载 在这里使用MINST开源数字识别数据集。 首先导入必要的库设置训练的设备gpu或cpu设置训练的轮次epoch然后设置数据集train_data、test_data并使用torchvision的datasets来读取下载的MINSt数据集被保存在当前路径的dataset文件夹下对于训练集和测试集分别设置train的参数最后把它转成tensor张量。 接着对设置好的数据集进行读取调用了torch.utils.data下的DataLoader分别读取训练集和测试集同时设置batch_size即为每一次读取多少张图片然后对训练集数据进行展平通常测试集不需要。 # 搭建CNN卷积神经网络对MNIST数据集实现数字识别import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader from torch.optim.lr_scheduler import StepLR import cv2 import matplotlib.pyplot as plt import numpy as npdevice torch.device(cuda if torch.cuda.is_available() else cpu) epoch 10train_data datasets.MNIST(./dataset, trainTrue,downloadTrue,transformtransforms.ToTensor()) test_data datasets.MNIST(./dataset, trainFalse, downloadTrue,transformtransforms.ToTensor())train_loader DataLoader(train_data, batch_size16, shuffleTrue) test_loader DataLoader(test_data, batch_size16, shuffleFalse) 二.定义训练网络 其中super().__init__()允许我们调用父类nn.Module的方法 对于卷积操作nn.Conv2d输入通道数输出通道数卷积核尺寸步长padding大小参数如此因为输入为灰度图则对于第一个卷积的输入通道数等于1最后线性层会输出一个包含10个数据的变量分别代表10个数字类别的概率。 然后我们实例化model为网络的对象定义损失函数为交叉熵损失函数使用Adam优化器对参数model.parameters()进行优化初始化学习率为0.001,并调用学习率更新器。 class Dight(nn.Module):def __init__(self):super().__init__()self.model nn.Sequential(nn.Conv2d(1, 10, 5), #输入batch*1*28*28 输出batch*10*24*24(28 -5 1)nn.ReLU(), #保持shape不变 输出batch*10*24*24(28 -5 1)nn.MaxPool2d(2), #输入batch*10*24*24(28 -5 1) 输出batch*10*12*12nn.Conv2d(10, 20, 3), #输入batch*10*12*12 输出batch*20*10*10(12 - 3 1)nn.ReLU(),nn.Flatten(),nn.Linear(20*10*10, 500), #输入batch2000 输出batch 500nn.ReLU(), #保持shape不变nn.Linear(500, 10) #输入batch 500 输出batch 10)def forward(self, x):return self.model(x)model Dight() model model.to(device) loss_fn nn.CrossEntropyLoss() loss_fn loss_fn.to(device) optimizer optim.Adam(model.parameters(), lr 0.001) scheduler StepLR(optimizer, step_size 5, gamma 0.5) 三.开始训练 使用model.train()开始训练使用for循环遍历数据集中的数据imgs和标签targets对梯度初始化将数据传入model进行前向传播并输出前向传播结果(outputs)根据outputs和给定的标签targets计算交叉熵损失loss根据loss进行反向传播根据反向传播更新模型参数。 同时每1000步打印一下当前的步数和loss用于观察训练进度和效果。 #定义训练方法 def train():#模型训练model.train()train_step 0for batch_index, (imgs, targets) in enumerate(train_loader):#部署到device上imgs, targets imgs.to(device), targets.to(device)#梯度初始化为0optimizer.zero_grad()#训练后的结果outputs model(imgs)#计算损失loss loss_fn(outputs, targets) #交叉熵损失适用于多分类任务二分类适用于sigmoid#反向传播loss.backward()#参数更新optimizer.step()train_step 1if train_step % 1000 0:print(ftrain Epoch: {train_step} , Loss: {loss.item()}) 四.测试方法 我们会使用测试集对网络进行验证通过model.eval()对模型进行验证因为验证时不会计算梯度也不算反向传播所以与训练不同的是需要使用语句with torch.no_grad()同样的对测试集进行遍历这里也可以仿照训练时的写法,之后同样的计算outputs和loss还会对test_loss和accuracy进行累计观察网络在测试集的效果 #定义测试方法 def test():#模型验证model.eval()#正确率accuracy 0.0#测试损失test_loss 0.0with torch.no_grad(): #不会计算梯度也不会反向传播for imgs, targets in test_loader:#部署到device上imgs, targets imgs.to(device), targets.to(device)#测试数据outputs model(imgs)#计算测试损失loss loss_fn(outputs, targets)test_loss loss.item()#累计正确的值accuracy (outputs.argmax(1) targets).sum().item()test_loss / len(test_loader)accuracy / len(test_data)print(f整体测试集上的损失: {test_loss},准确率 : {accuracy})五.模型保存 调用 torch.save(model, my_CNN.pth) print(模型已保存) 即可 整合上面代码 if __name__ __main__:#调用方法for epoch in range(1, epoch 1):print(f-------------------第{epoch}轮训练开始------------------)train()# 调整学习率scheduler.step()test()torch.save(model, my_CNN.pth)print(模型已保存)六.结果测试 创建另一个py文件输入任意一张数字图片对图片的数字进行预测多分类。 打开image并将它resize为28*28如这里使用的3.jpg为 用torch.load()加载模型 from PIL import Image import torchvision import torch from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequentialimg_path /home/lm/数字识别/picture/3.jpg image Image.open(img_path) device torch.device(cuda if torch.cuda.is_available() else cpu)transform torchvision.transforms.Compose([torchvision.transforms.Resize((28, 28)),torchvision.transforms.ToTensor()])image transform(image)class Dight(nn.Module):def __init__(self):super().__init__()self.model nn.Sequential(nn.Conv2d(1, 10, 5), #输入batch*1*28*28 输出batch*10*24*24(28 -5 1)nn.ReLU(), #保持shape不变 输出batch*10*24*24(28 -5 1)nn.MaxPool2d(2), #输入batch*10*24*24(28 -5 1) 输出batch*10*12*12nn.Conv2d(10, 20, 3), #输入batch*10*12*12 输出batch*20*10*10(12 - 3 1)nn.ReLU(),nn.Flatten(),nn.Linear(20*10*10, 500), #输入batch2000 输出batch 500nn.ReLU(), #保持shape不变nn.Linear(500, 10) #输入batch 500 输出batch 10)def forward(self, x):return self.model(x)model torch.load(/home/lm/数字识别/my_CNN.pth)image torch.reshape(image, (1,1,28,28)).to(device) model.eval() with torch.no_grad():output model(image) print(output)print(output.argmax(1)) 最终输出为 tensor([[-14.0138,  -4.8722,  -7.2821, -11.5329,   6.1589,  -8.7089,  -7.8535,           -6.8521,  -5.4265,  -7.6144]], devicecuda:0) tensor([4], devicecuda:0) 可以看出模型可以正确预测出图片类别 七.数据集转换 问题 在上一步加载图片时我们使用了MINST数据集的图片但是我们下载的MINST数据集的格式是这样的 数据集介绍 MNIST数据集来自美国国家标准与技术研究所, National Institute of Standards and Technology (NIST)。训练集training set由来自250个不同人手写的 数字构成其中50%是高中学生50%来自人口普查局the Census Bureau的工作人员。测试集test set也是同样比例的手写数字数据但保证了测试集和训练集 的作者集不相交。 MNIST数据集一共有7万张图片其中6万张是训练集1万张是测试集。每张图片是28 × 28 28\times 2828×28的0 − 9 0-90−9的手写数字图片组成。每个图片是黑底 白字的形式黑底用0表示白字用0-1之间的浮点数表示越接近1颜色越白。每个元素表示图片对应的数字出现的概率显然该向量标签表示的是数字5。 MNIST数据集下载地址是http://yann.lecun.com/exdb/mnist/它包含了4 44个部分 (1)训练数据集train-images-idx3-ubyte.gz 9.45 MB包含60,000个样本。     (2)训练数据集标签train-labels-idx1-ubyte.gz28.2 KB包含60,000个标签。     (3)测试数据集t10k-images-idx3-ubyte.gz1.57 MB 包含10,000个样本。     (4)测试数据集标签t10k-labels-idx1-ubyte.gz4.43 KB包含10,000个样本的标签。 数据集转换 编写一个脚本把原二进制格式的数据转换成jpg格式这里先转换100张 import torch import torch.nn as nn import torch.nn.functional as F import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import cv2 import numpy as npwith open(./dataset/MNIST/raw/train-images-idx3-ubyte, rb) as f:file f.read()for i in range(1,100):image1 [int(str(item).encode(ascii), 16) for item in file[16784*(i-1) : 16784*i]]print(image1)image1_np np.array(image1, dtype np.uint8).reshape(28, 28, 1)cv2.imwrite(f./picture/{i}.jpg, image1_np) 最后可在picture文件夹下找到转换完成的jpg数据再用它进行结果测试即可 八.总结 本文介绍了一个通用简单的pytorch框架还有很多不足和缺点后续会在本系列继续完善框架
http://www.dnsts.com.cn/news/43417.html

相关文章:

  • 哪里网站用vue.js做的罗湖网站建设费用
  • 设计logo网站免费下载泰安推广工作室
  • 公司网站 域名 申请 空间如何一次性删除wordpress拉圾评论
  • 陕西网站建设企业网站认证打的钱怎么做分录
  • 做网站一排文字怎么水平对齐wordpress静态化经验
  • 网站内容更新教程wordpress 页眉修改
  • 门户网站属于什么类型的模式公司一定建设网站
  • 建设银网站百度网站的优缺点
  • 公司展示网站模板免费下载只做汽车的网站
  • 集约化网站建设项目西安网站开发招聘
  • 织梦手机网站模板删除不了自己怎么设计公主裙
  • 网站后台补丁如何做中国建设第一平台网站
  • 深圳婚庆网站建设广东省住房城乡建设厅门户网站
  • 排版设计模板网站网页设计实训方法步骤
  • 大气精美网站设计工作室织梦模板(附赠精美织梦后台模板)列出网站开发建设的步骤
  • 怎么做网站申请广告自媒体害了多少人
  • wap网站前台平面设计包括什么
  • 青岛网站建设多少钱163免费邮箱注册
  • 南昌建设医院网站网站备案是空间备案还是域名备案
  • 公司网站百度小程序开发wordpress 数据库类
  • php网站后台密码忘记如何优化标题关键词
  • dede本地搭建好网站后台密码和用户名是什么最专业企业营销型网站建设
  • 网站推广优化c重庆wordpress微信机器人高级版 免费
  • 可以做免费的网站吗seo排名推广
  • 莆田网站建设电话永久免费仓库出入库管理软件
  • 百度网盘资源搜索引擎入口做网站优化哪家好
  • 南京建设银行公积金查询网站淘宝上做网站权重
  • 想找可以在家做的手工活去什么网站长春网站排名公司
  • 家居企业网站建设资讯wordpress 语言文件夹
  • 网站模版超市推广方法策略与经验总结