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

精品资源共享课网站建设新浪博客

精品资源共享课网站建设,新浪博客,网页应用生成器,wordpress图片分页插件简介 现在主流有两个框架pytorch和TensorFlow,本文主要介绍pytorch PyTorch#xff1a;由 Facebook 的人工智能研究小组开发和维护。PyTorch 以其动态计算图#xff08;Dynamic Computational Graph#xff09;和易用性著称#xff0c;非常适合研究人员和开发者进行实验和…简介 现在主流有两个框架pytorch和TensorFlow,本文主要介绍pytorch PyTorch由 Facebook 的人工智能研究小组开发和维护。PyTorch 以其动态计算图Dynamic Computational Graph和易用性著称非常适合研究人员和开发者进行实验和快速原型开发。TensorFlow由 Google 开发和维护。TensorFlow 是一个更加成熟和全面的框架支持大规模的生产环境部署特别是在云计算和分布式计算方面具有优势。 然后介绍两个小工具 dir()打开该包看看里面有什么东西如果IDE使用的是pycharm的话按住Ctrl直接跳转输入函数的参数的时候按住CtrlP可以看需要填哪些参数 help()官方解释文档教你如何使用该工具 神经网络搭建步骤 数据集介绍 数据集为CIFAR10 CIFAR-10 数据集由 10 个类的 60000 张 32x32 彩色图像组成每个类有 6000 张图像。有 50000 张训练图像和 10000 张测试图像。图像大小为3x32x32 数据集分为 5 个训练批次和 1 个测试批次每个批次有 10000 张图像。测试批次包含每个类中随机选择的 1000 张图像。训练批次包含按随机顺序排列的剩余图像但某些训练批次可能包含来自一个类的图像多于另一个类的图像。在它们之间训练批次正好包含来自每个类的 5000 张图像。 以下是数据集中的类以及每个类的 10 张随机图像 运行下列代码会导入数据集没有下载的会自动下载 datasets导入数据集 dataloader分发数据每批次送入64图片进入网络训练 transform更改图片数据的类型比如将PIL改成tensor类型 train_data torchvision.datasets.CIFAR10(./dataset,trainTrue,transformtorchvision.transforms.ToTensor(),downloadTrue) test train_data.classes print(test) test_data torchvision.datasets.CIFAR10(./dataset,trainFalse,transformtorchvision.transforms.ToTensor(),downloadTrue) train_dataloader DataLoader(train_data,batch_size64) test_dataloader DataLoader(test_data,batch_size64)搭建网络  由官网可知官网链接PyTorch documentation — PyTorch 2.4 documentation使用pytorch搭建网络至少需要重写2个函数一个__init__() 初始化函数另一个forward()前向传播函数下图为官网截图 按照官网给的例子我们重写我们的网络结构如下图所示  网络结构如下图所示 代码思路输入3x32x32---最后输出10个参数具体过程如下图所示 二维卷积参数计算公式如下图根据输入输出计算padding和stride 代码实现 使用sequential() class Wisdom(nn.Module):def __init__(self):super(Wisdom, self).__init__()self.model1 Sequential(nn.Conv2d(3, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, padding2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024, 64),nn.Linear(64, 10))def forward(self, x):x self.model1(x)return x 不使用sequential() class Wisdom(nn.Module):def __init__(self):super(Wisdom, self).__init__()self.conv1Conv2d(3,32,5,padding2)self.maxpool1MaxPool2d(2)self.conv2Conv2d(32,32,5,padding2)self.maxpool2MaxPool2d(2)self.conv3Conv2d(32,64,5,padding2)self.maxpool3MaxPool2d(2)self.flattenFlatten()self.linear1Linear(1024,64)self.linear2 Linear(64, 10)def forward(self,x):xself.conv1(x)xself.maxpool1(x)xself.conv2(x)xself.maxpool2(x)xself.conv3(x)xself.maxpool3(x)xself.flatten(x)xself.linear1(x)xself.linear2(x)return x实例化神经网络对象损失函数优化器 #创建神经网络 wisdom Wisdom() wisdomwisdom.cuda() #损失函数 loss_fn nn.CrossEntropyLoss() loss_fnloss_fn.cuda() #优化器 learn_rate 0.01 optimizer torch.optim.SGD(wisdom.parameters(),lrlearn_rate) 损失函数Loss Function 常见的损失函数包括 选择哪种损失函数取决于具体的任务和模型类型。在训练过程中目标是最小化损失函数的值从而提高模型的预测准确性。 优化器 优化器Optimizer是机器学习中用于调整模型参数以最小化损失函数的算法。优化器通过迭代过程逐步更新模型的权重和偏置以找到损失函数的最小值。以下是一些常用的优化器 设置网络参数 使用writer SummaryWriter(logs_train)可以可视化整个训练过程 #设置网络的一些参数 #记录的训练次数 total_train_step 0 #记录测试次数 total_test_step 0 #训练的轮数 epoch10 #添加tensorboard writer SummaryWriter(logs_train) 训练和验证网络并将重要信息可视化屏幕 重要代码解析 wisdom.train()标志网络进入训练状态 loss loss_fn(outputs,targets)计算损失函数 optimizer.zero_grad() 梯度置零防止上个梯度对本轮训练产生影响loss.backward()反向传播optimizer.step()梯度更新 wisdom.eval()模型进入测试状态 将损失值和精度闯入writer并绘制曲线图 writer.add_scalar(test_loss, total_test_loss, total_test_step) writer.add_scalar(test_accuracy, total_accuracy/test_data_size, total_test_step) torch.save(wisdom,./model_train/wisdom_{}.pth.format(i))保存训练好模型 for i in range(epoch):print(----第{}轮开始----.format(i1))#开始训练#进入训练状态wisdom.train()for data in train_dataloader:imgs,targets dataimgsimgs.cuda()targetstargets.cuda()outputs wisdom(imgs)loss loss_fn(outputs,targets)#优化器调优optimizer.zero_grad()loss.backward()optimizer.step()total_train_step 1if total_train_step % 100 0:print(训练次数{},loss:{}:.format(total_train_step,loss))writer.add_scalar(train_loss,loss.item(),total_train_step)#模型测试#模型进入测试状态wisdom.eval()total_test_loss0total_accuracy 0with torch.no_grad():# 提高推理速度和节省内存for data in test_dataloader:imgs,targets dataimgs imgs.cuda()targets targets.cuda()outputs wisdom(imgs )loss loss_fn(outputs,targets)total_test_losstotal_test_lossloss.item()accuracy (outputs.argmax(1)targets).sum()total_accuracytotal_accuracyaccuracyprint(整体测试集合的loss:{}.format(total_test_loss))print(整体测试集合的准确率:{}.format(total_accuracy/test_data_size))writer.add_scalar(test_loss, total_test_loss, total_test_step)writer.add_scalar(test_accuracy, total_accuracy/test_data_size, total_test_step)total_test_step 1torch.save(wisdom,./model_train/wisdom_{}.pth.format(i))print(模型已经保存)#torch.save(wisdom.state_dict(),./model_train/wisdom_{}.pth.format(i)) writer.close() 使用GPU加速训练 确保电脑有显卡并正确安装驱动而且要正确下载对应cuda  下载教程 进入pytorch官网 根据自己的系统选择一般使用anaconda 在Windows下进行python环境管理复制红框部分在Anaconda Prompt 粘贴运行注意自己的cuda版本是否支持 查看cuda版本打开英伟达控制面板桌面右键或者系统右下角然后点击系统信息之后点击组件 GPU程序设置 在神经网络损失函数的实例对象后加.cuda()即可以及在图片数据后加.cuda() wisdomwisdom.cuda() loss_fnloss_fn.cuda() imgsimgs.cuda() targetstargets.cuda() 保存模型 torch.save(wisdom,./model_train/wisdom_{}.pth.format(i)) 使用训练好的网络进行分类任务 加载网络模型 model torch.load(./model_train/wisdom_49.pth) 若出现runtime error 将模型加载方式换成下列语句将GPU训练的模型映射到CPU 出现runtimer error 将模型加载方式换成下列语句将GPU训练的模型映射到CPU 或者将分类的图片进行cuda加速 image image.cuda()#使用GPU训练的模型需要加CUDA 使用SummaryWriter使训练可视化 打开Anaconda Prompt再激活环境后运行下列命令 tensorboard --logdir D:\pyc_workspace\learn_pytorch\logs_train 上列的地址根据train.py代码中的这个语句确定 writer SummaryWriter(logs_train) 一定要改成自己的文件地址,具体操作见下图 可视化结果如下图所示 最后解释一个语句with torch.no_grad()提高推理速度和节省内存 with torch.no_grad():# 提高推理速度和节省内存for data in test_dataloader:imgs,targets dataimgs imgs.cuda()targets targets.cuda()outputs wisdom(imgs )loss loss_fn(outputs,targets)total_test_losstotal_test_lossloss.item()accuracy (outputs.argmax(1)targets).sum()total_accuracytotal_accuracyaccuracy 程序汇总  train.py 使用cpu训练网络 import torchvision from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriterfrom model import *train_data torchvision.datasets.CIFAR10(./dataset,trainTrue,transformtorchvision.transforms.ToTensor(),downloadTrue)test_data torchvision.datasets.CIFAR10(./dataset,trainFalse,transformtorchvision.transforms.ToTensor(),downloadTrue)#length长度 train_data_size len(train_data) test_data_size len(test_data) print(训练集长度{}.format(train_data_size)) print(测试集长度{}.format(test_data_size))#使用dataloader加载数据集 train_dataloader DataLoader(train_data,batch_size64) test_dataloader DataLoader(test_data,batch_size64)#创建神经网络 wisdom Wisdom() #损失函数 loss_fn nn.CrossEntropyLoss() #优化器 learn_rate 0.01 optimizer torch.optim.SGD(wisdom.parameters(),lrlearn_rate)#设置网络的一些参数 #记录的训练次数 total_train_step 0 #记录测试次数 total_test_step 0 #训练的轮数 epoch10 #添加tensorboard writer SummaryWriter(logs_train) #tensorboard --logdir D:\pyc_workspace\learn_pytorch\logs_trainfor i in range(epoch):print(----第{}轮开始----.format(i1))#开始训练#进入训练状态wisdom.train()for data in train_dataloader:imgs,targets dataoutputs wisdom(imgs)loss loss_fn(outputs,targets)#优化器调优optimizer.zero_grad()loss.backward()optimizer.step()total_train_step 1if total_train_step % 100 0:print(训练次数{},loss:{}:.format(total_train_step,loss))writer.add_scalar(train_loss,loss.item(),total_train_step)#模型测试#模型进入测试状态wisdom.eval()total_test_loss0total_accuracy 0with torch.no_grad():for data in test_dataloader:imgs,targets dataoutputs wisdom(imgs )loss loss_fn(outputs,targets)total_test_losstotal_test_lossloss.item()accuracy (outputs.argmax(1)targets).sum()total_accuracytotal_accuracyaccuracyprint(整体测试集合的loss:{}.format(total_test_loss))print(整体测试集合的准确率:{}.format(total_accuracy/test_data_size))writer.add_scalar(test_loss, total_test_loss, total_test_step)writer.add_scalar(test_accuracy, total_accuracy/test_data_size, total_test_step)total_test_step 1torch.save(wisdom,./model_train/wisdom_{}.pth.format(i))print(模型已经保存)#torch.save(wisdom.state_dict(),./model_train/wisdom_{}.pth.format(i)) writer.close()train_gpu.py  使用GPU训练网络 import torch import torchvision from torch import nn from torch.nn import Conv2d, MaxPool2d, Flatten, Linear, Sequential from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWritertrain_data torchvision.datasets.CIFAR10(./dataset,trainTrue,transformtorchvision.transforms.ToTensor(),downloadTrue) test train_data.classes print(test) test_data torchvision.datasets.CIFAR10(./dataset,trainFalse,transformtorchvision.transforms.ToTensor(),downloadTrue)class Wisdom(nn.Module):def __init__(self):super(Wisdom, self).__init__()self.model1 Sequential(nn.Conv2d(3, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, padding2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024, 64),nn.Linear(64, 10))def forward(self, x):x self.model1(x)return x#length长度 train_data_size len(train_data) test_data_size len(test_data) print(训练集长度{}.format(train_data_size)) print(测试集长度{}.format(test_data_size))#使用dataloader加载数据集 train_dataloader DataLoader(train_data,batch_size64) test_dataloader DataLoader(test_data,batch_size64)#创建神经网络 wisdom Wisdom() wisdomwisdom.cuda() #损失函数 loss_fn nn.CrossEntropyLoss() loss_fnloss_fn.cuda() #优化器 learn_rate 0.01 optimizer torch.optim.SGD(wisdom.parameters(),lrlearn_rate)#设置网络的一些参数 #记录的训练次数 total_train_step 0 #记录测试次数 total_test_step 0 #训练的轮数 epoch10 #添加tensorboard writer SummaryWriter(logs_train) #tensorboard --logdir D:\pyc_workspace\learn_pytorch\logs_trainfor i in range(epoch):print(----第{}轮开始----.format(i1))#开始训练#进入训练状态wisdom.train()for data in train_dataloader:imgs,targets dataimgsimgs.cuda()targetstargets.cuda()outputs wisdom(imgs)loss loss_fn(outputs,targets)#优化器调优optimizer.zero_grad()loss.backward()optimizer.step()total_train_step 1if total_train_step % 100 0:print(训练次数{},loss:{}:.format(total_train_step,loss))writer.add_scalar(train_loss,loss.item(),total_train_step)#模型测试#模型进入测试状态wisdom.eval()total_test_loss0total_accuracy 0with torch.no_grad():# 提高推理速度和节省内存for data in test_dataloader:imgs,targets dataimgs imgs.cuda()targets targets.cuda()outputs wisdom(imgs )loss loss_fn(outputs,targets)total_test_losstotal_test_lossloss.item()accuracy (outputs.argmax(1)targets).sum()total_accuracytotal_accuracyaccuracyprint(整体测试集合的loss:{}.format(total_test_loss))print(整体测试集合的准确率:{}.format(total_accuracy/test_data_size))writer.add_scalar(test_loss, total_test_loss, total_test_step)writer.add_scalar(test_accuracy, total_accuracy/test_data_size, total_test_step)total_test_step 1torch.save(wisdom,./model_train/wisdom_{}.pth.format(i))print(模型已经保存)#torch.save(wisdom.state_dict(),./model_train/wisdom_{}.pth.format(i)) writer.close()test.py 利用神经网络模型进行分类记得把 img_path dog.jpg改成自己的路径 import torch import torchvision from PIL import Image from torch import nn from torch.nn import Sequentialtrain_data torchvision.datasets.CIFAR10(./dataset,trainTrue,transformtorchvision.transforms.ToTensor(),downloadTrue) classes_list train_data.classes#分类物体列表img_path dog.jpg # img_path airplane.jpg image Image.open(img_path) #image image.convert(RGB)#只保留为3通道transform torchvision.transforms.Compose([torchvision.transforms.Resize((32,32,)),torchvision.transforms.ToTensor()]) image transform(image) print(image.shape) class Wisdom(nn.Module):def __init__(self):super(Wisdom, self).__init__()self.model1 Sequential(nn.Conv2d(3, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 32, 5, padding2),nn.MaxPool2d(2),nn.Conv2d(32, 64, 5, padding2),nn.MaxPool2d(2),nn.Flatten(),nn.Linear(1024, 64),nn.Linear(64, 10))def forward(self, x):x self.model1(x)return x#加载网络模型 model torch.load(./model_train/wisdom_49.pth) #出现runtimer error 将模型加载方式换成下列语句将GPU训练的模型映射到CPU #model torch.load(./model_train/wisdom_9.pth,map_locationtorch.device(cpu)) print(model)imagetorch.reshape(image,(1,3,32,32))#增加batch_size维度 model.eval() with torch.no_grad():image image.cuda()#使用GPU训练的模型需要加CUDAoutput model(image) print(output) classes_indexoutput.argmax(1).item() print(classes_list)print(测试图片为{}.format(classes_list[classes_index])) 总结------多看官网 ------
http://www.hkea.cn/news/14466863/

相关文章:

  • 如何修改wordpress站杭州最新消息
  • 电子商务网站建设方案书的总结三亚百度推广开户
  • 蜘蛛云建站网站网站改版新闻稿
  • 加强网站集约化建设水果香精东莞网站建设技术支持
  • 化妆品网站建设建设网站的企业
  • 江阴网站制作建设网站教程
  • 网站模板下载网站有哪些品牌网站建设推广
  • 长沙公司做网站的价格做网站 空间还是服务器
  • 织梦网站做seo优化智能营销型网站制作
  • 南昌制作网站的公司做网站的行业平台
  • 河南省城乡和住房建设厅网站微信分享网站显示图片
  • 网站开发 手把手网站建设方案是什么
  • 网站 图标 素材企业网站模板下载哪家口碑好
  • 如何做旅游网站湖南建设部网站
  • wap手机网站开发软件wordpress编辑器不行
  • 苏州资讯网站建设工作态度和责任心感悟
  • 佛山优化网站公司wordpress本地打开很慢
  • 贵阳专业做网站公司有哪些广东新闻联播主持人
  • 网站如何做等保备案wordpress怎么私人媒体库
  • 做视频链接网站十大免费ppt网站软件
  • 网站怎么做动态图旅游网站设计规划书
  • wordpress仿站插件昆明购物网站建设
  • 网站有哪些布局郴州网站网络推广平台
  • 网站建设公司公司建一个公司网站多少钱
  • 网站查询ip地址查询长沙seo优化公司哪家好
  • 温州网站设计服务广东seo排名
  • 做外文网站wordpress suspected
  • 培训医院网站建设网站建设搭建环境
  • 上海做网站的公司电话wordpress 去掉左上角
  • 怎么将自己做的网站放到网上个人网站设计论文题目