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

烟台网站的建设2021最有潜力的新电商平台

烟台网站的建设,2021最有潜力的新电商平台,建设网站开发公司,手机网站前端用什么做代码步骤笔记导入模块设置参数数据预处理定义数据集1.Dataset2.ImageFolder加载数据集DataLoadertorchvision--数据预处理要使用的库torchvision.datasetstorchvision.modelstorchvision.transforms训练网络参数训练前的准备设置指定的训练设备(GPU、CPU)定义损失函数定义优化器… 代码步骤笔记导入模块设置参数数据预处理定义数据集1.Dataset2.ImageFolder加载数据集DataLoadertorchvision--数据预处理要使用的库torchvision.datasetstorchvision.modelstorchvision.transforms训练网络参数训练前的准备设置指定的训练设备(GPU、CPU)定义损失函数定义优化器训练过程验证/测试过程运行导入模块 import torch from tensorboardX import SummaryWriter //可视化设置参数 batch_size64 works4 epochs20 train_pathtrain val_pathval数据预处理 流程先定义数据集再将定义的数据集导入数据载入器(Dataloader)来读取数据。 定义数据集有两种方式一种是自定义Dataset包装类和DataLoader类一样它是torch.utils.data的里的一个类另一种是直接调用ImageFolder函数它是torchvision.datasets里的函数。 定义数据集 1.Dataset Dataset是一个抽象类,可以自定义数据集,为了能够方便的读取,需要将要使用的数据包装为Dataset类。 自定义的Dataset需要继承它并且实现两个成员方法: 1.__getitem__():该方法定义用索引(0到len(self))获取一条数据或一个样本。 2.__len__()方法返回数据集的总长度。 模板如下 import torch.utils.data #定义一个数据集 class CaptionDataset(Dataset): 数据集演示 def __init__(self,transformNone): 实现初始化方法在初始化的时候将数据读载入....(包括加载数据路径)def __getitem__(self):return self....def __len__(self):return len(...)# 实例化这个类然后我们就得到了Dataset类型的数据记下来就将这个类传给DataLoader就可以了。 train_data CaptionDataset(transformtransform) #transform需自己定义(见下面torchvision.transforms)2.ImageFolder ImageFolder假设所有的文件按文件夹保存每个文件夹下存储同一个类别的图片文件夹名为类名其构造函数如下 import torchvision.datasets ImageFolder(root, transformNone, target_transformNone, loaderdefault_loader)各参数含义 root在root指定的路径下寻找图片 transform对PIL Image进行的转换操作transform的输入是使用loader读取图片的返回对象 target_transform对label的转换 loader给定路径后如何读取图片默认读取为RGB格式的PIL Image对象 label:按照文件夹名顺序排序后存成字典即{类名:类序号(从0开始)} 举例如下 import torchvision.datasets #此处transform需自己定义(见下面torchvision.transforms)其他参数为默认值 train_datatorchvision.datasets.ImageFolder(roottrain_path,transformtransform) 加载数据集 DataLoader DataLoader是一个数据加载器类实现了对数据集进行随机采样和多轮次迭代的功能。在训练过程中可以非常方便地实现多轮次小批量随机梯度下降训练。 常用参数有:Dataset数据集实例,batch_size(每个batch的大小,shuffle(是否进行搅乱操作),num_workers(加载数据的时候使用几个子进程),返回一个可迭代对象。 import torch.utils.data train_loader torch.utils.data.DataLoader(CaptionDataset(train_data, transformtransform),batch_sizebatch_size, shuffleTrue, num_workersworkers)详细有关参数见博客:PyTorch 中的数据类型 torch.utils.data.DataLoader torchvision–数据预处理要使用的库 torchvision是Pytorch中专门用来处理图像的库。 提供了常用图片数据集(datasets); 训练好的模型(models); 一般的图像转换操作类(transforms), torchvision.datasets torchvision.datasets可以理解为PyTorch团队自定义的dataset这些dataset帮我们提前处理好了很多的图片数据集我们拿来就可以直接使用 MNISTCOCOCaptionsDetectionLSUNImageFolderImagenet-12CIFARSTL10SVHNPhotoTour 以上我们可以直接用(其他的只能通过自己自定义数据集)示例如下: import torchvision.datasets as datasets trainset datasets.MNIST(root./data, # 表示 MNIST 数据的加载的目录trainTrue, # 表示是否加载数据库的训练集false的时候加载测试集downloadTrue, # 表示是否自动下载 MNIST 数据集transformNone) # 表示是否需要对数据进行预处理none为不进行预处理torchvision.models torchvision提供了训练好的模型可以加载后直接使用(见下面代码)或者在进行迁移学习torchvision.models模块的子模块中包含以下模型结构 AlexNetVGGResNetSqueezeNetDenseNet #导入预训练模型 import torchvision.models model torchvision.models.vgg16(pretrainedTrue) #True代表已经训练好的模型torchvision.transforms transform模块提供了一般的图像转换操作类用作数据处理和数据增强。 主要提供了对PIL Image对象和Tensor对象的常用操作。 对PIL Image对象的常用操作有 Resize:调整图片尺寸CenterCrop、RandomCrop、RandomSizedCrop:裁剪图片Pad:填充ToTensor:将PIL Image对象转成Tensor,会自动将[0,255]归一化至[0,1] 对Tensor对象的常用操作有 Normalize:标准化,即减均值,除以标准差ToPILImage:将Tensor转为PIL Image对象。 import torchvision.transforms as transforms transform transforms.Compose([transforms.RandomCrop(32, padding4), #先四周填充0在把图像随机裁剪成32*32transforms.RandomHorizontalFlip(), #图像一半的概率翻转一半的概率不翻转transforms.RandomRotation((-45,45)), #随机旋转transforms.ToTensor(),transforms.Normalize((0.4914, 0.4822, 0.4465), (0.229, 0.224, 0.225)), #R,G,B每层的归一化用到的均值和方差 ])详细有关transforms的用法见博客PyTorch 学习笔记三transforms的二十二个方法 训练网络参数 训练前的准备 设置指定的训练设备(GPU、CPU) device torch.device(cuda if torch.cuda.is_available() else cpu)定义损失函数 torch.nn模块中定义了很多标准地损失函数。 import torch.nn as nn xentropynn.CrossEntropyLoss() #此处定义一个交叉熵损失函数对象该对象可以调用backward()方法实现误差反向传播。定义优化器 torch.optim模块提供了很多优化算法类 比如:torch.optim.SGD,torch.optim.Adam,torch.optim.RMSprop。这里以SGD为例。 #import torch.optim netCNN().to(device) #使用gpu构造一个CNN对象 optimizertorch.optim.SGD(paramsnet.parameters(),lr0.01,momentum0.9) #上式参数依次为需要网络模型的参数、学习率、动量参数详细参数见博客:torch.optim.SGD()各参数的解释 训练过程 神经网络训练过程的一步迭代包含四个主要步骤 前向运算计算给定输入的预测结果计算损失函数值反向传播(BP)计算参数梯度(计算之前要先梯度清零)使用梯度下降法更新参数值 详细代码如下 def train(net,optimizer,loss_fn,num_epoch,data_loader,device): 参数分别为网络模型、损失函数(对应之前的xentropy)、epoch总次数、数据加载器、训练设备net.train() #进入训练模型for epoch in range(num_epoch):print(Epoch {}/{}.format(epoch1, num_epochs))running_loss0running_corrects0for i,data in enumerate(data_loader):inputsdata[0].to(device) #输入labelsdata[1].to(device) #真实值标签#下面优化过程optimizer.zero_grad() #先把前一步的梯度清除,设置梯度值为0outputsnet(inputs) #前向运算计算网络模型在inputs上的输出outputslossloss_fn(outputs,labels) #计算损失函数值loss.backward() #进行反向传播计算梯度optimizer.step() #使用优化器的step()方法进行梯度下降更新模型参数#可以输出两种lossloss为每次迭代的lossrunning_loss为每个epoch的loss之后再取平均值。running_lossloss.item() #计算每个epoch的loss总值_, preds torch.max(outputs, 1)running_corrects torch.sum(preds labels).item()epoch_lossrunning__loss/len(train_data) #计算每个epoch的平均lossepoch_acc running_corrects / len(train_data)print({} Loss: {:.4f} Acc: {:.4f}.format(train, epoch_loss, epoch_acc)) 验证/测试过程 测试和验证集过程不用反向传播也不用更新梯度。 def evaluate(net,loss_fn,data_load,device):net.eval() #进入模型评估模式验证和测试都是这个running_loss0correct0.0total0for data in data_loader:inputsdata[0].to(device) #输入labelsdata[1].to(device) #真实值标签with torch.no_grad(): outputsnet(inputs)lossloss_fn(outputs,labels)running_lossloss.item()_,predictedtorch.max(outputs.data,1)totallabels.size(0) #另一种计算总数的方法correct(predictedlabels).sum().item() #计算预测对的数epoch_loss running_loss/len(val_data)acccorrect/total #计算准确率print({} Loss: {:.4f} Acc: {:.4f}.format(valid, epoch_loss, acc)) 运行 有两种方式 1.设立一个主函数main()将for epoch in epochs:以及train函数和test函数放到main()里运行就可以了。2.将for epoch in epochs:和test函数放入train函数再直接运行train()函数就可以了。 完整代码实例:pytorch实现图像分类代码实例
http://www.huolong8.cn/news/320771/

相关文章:

  • wordpress主题太难看了企业网站优化方案案例
  • 专业网站优化服务公司网站的后台
  • 制作电子商务网站页面五金配件店 东莞网站建设
  • 那间公司做网站好建筑工地招工
  • 计算机网站建设教程石家庄职业技术学院教务网络管理系统
  • 百度站长验证网站wordpress+技术类模板
  • 做网站哪个公司好 快选宁陵建站宝电子商务网站开发报告
  • 网站设计存在的问题域名免费注册
  • 互联网公司网站建设看到网站的第一印象
  • 太原站扩建后的规模稻壳ppt免费模板
  • 影视 网站建设 新媒体大良营销网站建设新闻
  • 龙岗区住房和建设局网站长春网站建设880元
  • 上海网站建设天锐科技武夷山网站制作
  • 贵阳网站制作免费wordpress 直排主题
  • 微信公众号商城网站开发有好的网址推荐吗
  • 资阳市住房和城乡建设局网站做搜狗手机网站
  • 宁波做网站优化公司建行门户网站
  • 网站建设教程浩森宇特wordpress 支持pdf
  • 将二级域名 网站目录网站 技术
  • 专业网站设计联系电话wordpress 自定义菜单
  • 网站多久才能做起来有没有房建设计的网站
  • 山西公司怎么做网站成都便宜网站建设
  • 网站分为哪几类做企业网站电话销售话术
  • 西宁网站制作深圳网站seo教程
  • 铜陵做网站微信网站开发流程
  • 网络营销常用工具有哪些?聊城seo优化
  • 东莞建设银行电话号码蚌埠seo
  • 北京怎样在社保网站上做减员南沙网站建设公司
  • 广告推广网站建设软件外包项目网
  • 电子商城 网站开发 支持手机端企业门户网站免费模板