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

南昌网站推广¥做下拉去118crwordpress 分销插件

南昌网站推广¥做下拉去118cr,wordpress 分销插件,翼城网站建设,网站建设实训结论与分析总结你已经学习了如何定义神经网络#xff0c;计算损失和执行网络权重的更新。 现在你或许在思考。 What about data? 通常当你需要处理图像#xff0c;文本#xff0c;音频#xff0c;视频数据#xff0c;你能够使用标准的python包将数据加载进numpy数组。之后你能够转换这些…你已经学习了如何定义神经网络计算损失和执行网络权重的更新。 现在你或许在思考。 What about data? 通常当你需要处理图像文本音频视频数据你能够使用标准的python包将数据加载进numpy数组。之后你能够转换这些数组到torch.*Tensor。 对于图片类似于Pillow,OPenCV的包很有用对于音频类似于scipy和librosa的包对于文字无论是基于原生python和是Cython的加载或者NLTK和SpaCy都有效对于视觉我们特意创建了一个包叫做torchvision,它有常见数据集的数据加载比如ImageNet,CIFAR10MNIST等还有图片的数据转换torchvision.datasets和torch.utils.data.Dataloader。 这提供了很方便的实现避免了写样板代码。 对于这一文章我们将使用CIFAR10数据集。它拥有飞机汽车鸟猫鹿狗雾马船卡车等类别。CIFAR-10的图片尺寸为3*32*32也就是3个颜色通道和32*32个像素。   Training  an image classifier  我们将按照顺序执行如下步骤 使用torchvision加载并且标准化CIFAR10训练和测试数据集定义一个卷积神经网络定义损失函数使用训练数据训练网络使用测试数据测试网络  1.加载并标准化CIFAR10 使用torchvision,加载CIFAR10非常简单 import torch import torchvision import torchvision.transforms as transforms torchvision数据集的输出是PIL图片库图片范围为[0,1]。我们将它们转换为tensor并标准化为[-1,1]。 import torch import torchvision import torchvision.transforms as transformstransformtransforms.Compose([transforms.ToTensor(), transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))]) trainsettorchvision.datasets.CIFAR10(root./data,trainTrue,downloadTrue,transformtransform) trainloadertorch.data.Dataloader(trainset,batch_size4,shuffleTrue,num_workers2) testsettorchvision.datasets.CIFAR10(root./data,trainFalse,downloadTrue,transformtransform) testloadertorch.utils.data.Dataloader(testset,batch_size4,shuffleFalse,num_workers2) classes (plane, car, bird, cat,deer, dog, frog, horse, ship, truck) out: Downloading https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz to ./data/cifar-10-python.tar.gz Files already downloaded and verified  我们来观察一下训练集图片 import matplotlib.pyplot as plt import numpy as npdef imshow(img):imgimg/20.5npimgimg.numpy()plt.imshow(np.transpose(npimg,(1,2,0)))dataiteriter(trainloader) images,labelsdataiter.next()imshow(torchvision.utils.make_grid(images)) plt.show() print(.join(%5s%classes[labels[j]] for j in range(4)))   out: truck truck dog truck    2.定义卷积神经网络 从前面神经网络章节复制神经网络并把它改成接受3维图片输入而不是之前定义的一维图片。 import torch.nn as nn import torch.nn.functional as Fclass Net(nn.Module):def __init__(self):super(Net,self).__init__()self.conv1nn.Conv2d(3,6,5)self.poolnn.MaxPool2d(2,2)self.conv2nn.Conv2d(6,16,5)self.fc1nn.Linear(16*5*5,120)self.fc2nn.Linear(120,84)self.fc3nn.Linear(84,10)def forward(self,x):xself.pool(F.relu(self.conv1(x)))xself.pool(F.relu(self.conv2(x)))xx.view(-1,16*5*5)xF.relu(self.fc1(x))xF.relu(self.fc2(x))xself.fc3(x)return xnetNet()    3.定义损失函数和优化器 我们使用分类交叉熵损失和带有动量的SGD import torch.optim as optim criterion nn.CrossEntropyLoss() optimizeroptim.SGD(net.parameters(),lr0.001,momentum0.9)   4.训练网络 我们只需要简单地迭代数据把输入喂进网络并优化。 import torch.optim as optim criterion nn.CrossEntropyLoss() optimizer optim.SGD(net.parameters(),lr0.001,momentum0.9)for epoch in range(2):running_loss0.0for i,data in enumerate(trainloader,0):inputs,labelsdataoptimizer.zero_grad()outputsnet(inputs)losscriterion(outputs,labels)loss.backward()optimizer.step()running_lossloss.item()if i%20001999:print([%d, %5d] loss: %.3f %(epoch 1, i 1, running_loss / 2000))running_loss0 print(Finished Training) out: [1, 2000] loss: 2.208 [1, 4000] loss: 1.797 [1, 6000] loss: 1.627 [1, 8000] loss: 1.534 [1, 10000] loss: 1.508 [1, 12000] loss: 1.453 [2, 2000] loss: 1.378 [2, 4000] loss: 1.365 [2, 6000] loss: 1.326 [2, 8000] loss: 1.309 [2, 10000] loss: 1.290 [2, 12000] loss: 1.262 Finished Training     4.在测试数据集上测试网络 我们已经遍历了两遍训练集来训练网络。需要检查下网络是不是已经学习到了什么。 我们将检查神经网络输出的预测标签是否与真实标签相同。如果预测是正确的我们将这一样本加入到正确预测的列表。 我们先来熟悉一下训练图片。 dataiteriter(testloader) images,labesdataiter.next()imshow(torchvision.utils.make_grid(images)) plt.show() print(GroundTruth: , .join(%5s % classes[labels[j]] for j in range(4)))   out: GroundTruth: plane deer dog horse  ok,现在让我们看一下神经网络认为这些样本是什么。 outputsnet(images)  输出是10个类别的量值大的值代表网络认为某一类的可能性更大。所以我们来获得最大值得索引 _,predictedtorch.max(outputs,1) print(Predicted: , .join(%5s %classes[predicted[j]] for j in range(4))) out: Predicted: bird dog deer horse  让我们看看整个数据集上的模型表现。 out: Accuracy of the network on the 10000 test images: 54 %  这看起来要好过瞎猜随机的话只要10%的准确率因为是10类。看来网络是学习到了一些东西。 我们来继续看看在哪些类上的效果好在哪些类上的效果比较差 out: Accuracy of plane : 56 % Accuracy of car : 70 % Accuracy of bird : 27 % Accuracy of cat : 16 % Accuracy of deer : 44 % Accuracy of dog : 64 % Accuracy of frog : 61 % Accuracy of horse : 73 % Accuracy of ship : 68 % Accuracy of truck : 61 % 好了接下来该干点啥 我们怎样将这个神经网络运行在GPU上呢 Trainning on GPU 就像你怎么把一个Tensor转移到GPU上一样现在把神经网络转移到GPU上。 如果我们有一个可用的CUDA,首先将我们的设备定义为第一个可见的cuda设备: devicetorch.device(cuda:0 if torch.cuda.is_available() else cpu) print(device) out: cuda:0  剩下的章节我们假定我们的设备是CUDA。 之后这些方法将递归到所有模块将其参数和缓冲区转换为CUDA张量 net.to(device)  记得你还需要在每步循环里将数据转移到GPU上 inputs,labelsinputs.to(device),labels.to(device) 为什么没注意到相对于CPU巨大的速度提升这是因为你的网络还非常小。   练习尝试增加你网络的宽度第一个nn.Conv2d的参数2应该与第二个nn.Conv2d的参数1是相等的数字观察你得到的速度提升。 达成目标 更深一步理解Pytorch的Tensor库和神经网络训练一个小神经网络来分类图片 Trainning on multiple GPUs 如果你想看到更加显著的GPU加速请移步https://pytorch.org/tutorials/beginner/blitz/data_parallel_tutorial.html  转载于:https://www.cnblogs.com/Thinker-pcw/p/9637411.html
http://www.zqtcl.cn/news/804941/

相关文章:

  • 小程序视频网站开发网站开发项目预算表
  • 邢台手机网站建设价格iis 手机网站
  • 网站开发流程三大部分微信学校网站模板
  • 网站推荐正能量专业做网站多少钱
  • 网站界面设计总结淘客手机端网站建设
  • 天津网站建设zhy88宁波企业黄页公司黄页
  • 个人网站课程设计报告app免费制作软件中文版
  • 品牌建设网站规划盛唐网站建设
  • 商城网站系统建站平台上建设的网站可以融资吗
  • 怎么查网站空间wordpress快速入门
  • 长沙 网站运营德国服务器网站
  • 有动效网站建网站的书籍
  • 网站模版更新公告2023年ppt模板免费
  • 广饶网站建设北京建设工程监督网站
  • 长沙网站建设电话郑州网站空间
  • 做网站是怎样赚钱的网页制作工具按其制作方式有
  • 网站地图在哪里展现电子商务网站需要做那些准备工作
  • 深圳网站设计收费标准中端网站建设公司
  • 有关wordpress教学的网站wordpress返回旧版
  • php做网站弊端wordpress强大播放器
  • 怎么直接做免费网站wordpress如何自建站
  • 中国建设银行建银购网站金堂企业网站建设
  • 手机微网站开发的目的和意义温州公司网站开发
  • 除了外链 还有什么办法使网站提高排名网站建设珠海 新盈科技
  • 几分钟弄清楚php做网站中国风景摄影网
  • 卡片式网站网页设计公司的市场评估
  • 网站开发的感想wordpress水煮鱼
  • 网站开发入门培训机构自豪地采用wordpress更改
  • 手机网站来几个最近的国际新闻大事件
  • 重庆网站开发设计公司电话资源网站优化排名