黑马程序员技术交流社区

标题: 【上海校区】Pytorch打怪路(一)pytorch进行CIFAR-10分类(1)... [打印本页]

作者: 不二晨    时间: 2018-9-5 10:12
标题: 【上海校区】Pytorch打怪路(一)pytorch进行CIFAR-10分类(1)...
2.大致流程

一般来说,使用深度学习框架我们会经过下面几个流程:

模型定义(包括损失函数的选择) --->数据处理和加载 ---> 训练(可能包含训练过程可视化) ---> 测试

所以我们在自己写代码的时候也基本上就按照这四个大模块四步走就ok了

官方给的这个例子呢,是先进行的第二步数据处理和加载,然后定义网络,这其实没什么关系。

所以本篇博文讲解的是  数据处理和加载 这一步的内容,当然会接着在后续博文写其他步骤。

此例的步骤:
A、Load and normalizing the CIFAR10 training and test datasets using torchvision
B、Define a Convolution Neural Network
C、Define a loss function
D、Train the network on the training data
E、Test the network on the test data

下面我就直接上程序,并且添加我自己的一些注解,觉得有问题的欢迎提出,希望和大家多交流。



3、代码分析首先使用torchvision加载和归一化我们的训练数据和测试数据。
a、torchvision这个东西,实现了常用的一些深度学习的相关的图像数据的加载功能,比如cifar10、Imagenet、Mnist等等的,保存在torchvision.datasets模块中。
b、同时,也封装了一些处理数据的方法。保存在torchvision.transforms模块中
c、还封装了一些模型和工具封装在相应模型中。可以从下图一窥大貌:


细节见torchvision的官方文档链接:http://pytorch.org/docs/0.3.0/torchvision/index.html



4、图片

图1

root表示存放dataset的位置,本例就是' ./data'

train,如果为True,就创建的是trainning set,可以看到我们的trainset调用它时用的是True

           而testset调用它时,参数里填的是False

transform,这个transform是形参名,由于我们定义的变换也叫transform,所以就有transform = transform,

看起来可能有点怪,其实我们的之前的变换可以随便命名

download,如果为True,就从网上下载,如果已经有下载好的数据就不会重复下载了

------------------------------------------------------------------------------------------------------------------------------------------


图2

数据加载器。组合数据集和采样器,并在数据集上提供单进程或多进程迭代器。

dataset:就是数据的来源,比如训练集就添入我们定义的trainset

batch_size:每批次进入多少数据,本例中填的是4

shuffle:如果为真,就打乱数据的顺序,本例为True

num_workers:用多少个子进程加载数据。0表示数据将在主进程中加载(默认: 0)

本例中为2。这个值是什么意思呢,就是数据读入的速度到底有多快,你选的用来加载数据的

子进程越多,那么显然数据读的就越快,这样的话消耗CPU的资源也就越多,所以这个值在自己

跑实验的时候,可以自己试一试,既不要让花在加载数据上的时间太多,也不要占用太多电脑资源



所以这第一步----数据加载和处理,要注意的就是这些内容,如果程序运行完毕,会显示:



这里我提个小建议,就是下载数据的那个root参数,官网代码给的是'./data',这个其实可以改成自己的位置

而且,建议改成 绝对路径 要好一点。然后由于代码可以直接从官网复制粘帖,所以这部分程序的运行的快慢,

基本就取决于下载数据的网速了,建议翻墙,可能翻墙也不见得很快,不如晚上睡觉前开始下,说不定第二天

醒来就下好了呢.......



作者: 不二晨    时间: 2018-9-6 11:09
奈斯
作者: 魔都黑马少年梦    时间: 2018-11-1 16:49





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2