【深度学习】纯干货之如何使用pytorch训练自己的数据(一)

您所在的位置:网站首页 如何加载预训练模型的数据 【深度学习】纯干货之如何使用pytorch训练自己的数据(一)

【深度学习】纯干货之如何使用pytorch训练自己的数据(一)

2024-07-16 14:17| 来源: 网络整理| 查看: 265

目录

零、前言

一、构建自己的数据集

二、代码与分析

1、依赖库的导入

2、超参数以及CPU/GPU的设置

3、图像预处理模块的建立

4、数据的读取​

码字不易,如果各位看官感觉该文章对你有所帮助,麻烦点个关注,如果有任何问题,请留言交流。如需转载,请注明出处,谢谢。

文章链接:

【深度学习】如何使用pytorch训练自己的数据(一)

https://blog.csdn.net/herocheney/article/details/118692887

零、前言

         通过我之前的文章相信大家已经了解如何进行pytorch环境的搭建,以及了解了数据集的作用。今天我们就直接使用该环境进行实战,搭建一个框架,构件卷积神经网络,并且能够训练测试自己的数据集。如前期流程不懂的朋友,参见我以前的博文:

pytorch网络搭建 :https://blog.csdn.net/herocheney/article/details/117739319

数据集的概念与区别:https://blog.csdn.net/herocheney/article/details/118300553

首先,为什么我们不使用Minist等现有数据集进行测试?比如,用代码下载数据集然后读取文件,如何如何。我认为这并没有什么卵用,现实的工程实践都是自己采集处理的数据集,读取分析的都是自己的图像,现成的数据集对我们没有什么参考价值。

一、构建自己的数据集

冠字号是人民币的唯一标识,银行等通过冠字号来确定该钱币的来源与去向,所以本实验以冠字号码识别为例,进行讲解。首先将数据集分为训练集(Train)与验证集(Validation),训练集和验证集均对数字2、6、7、9,进行构件样本。

考虑到数据集的均衡性,每个训练集的每一个类别的训练样本个数为2000个左右。验证集的样本,每一个类别为100个左右。

 每一个样本的大小为单通道32*32像素的灰度图。

构件好了数据集,我们就可以写代码了。 

二、代码与分析

 废话不多说,直接上代码。

1、依赖库的导入

首先就是先要导入我们所需要的各种库:

其中torch和torchvision就不用多说了,既然使用了pytorch那么这两个库是最基本的。

datasets:这里面有我们常用的几个数据集,当然,还可以加载我们自己的数据集;

transform:包含常用的图像处理操作,包含,随机切割,旋转,缩放等,以及数据类型的转换,比如,tensor到numpy的转换。

import torch import torchvision from torch.autograd import Variable from torchvision import transforms from torchvision import datasets 2、超参数以及CPU/GPU的设置

然后进行设置一下超参数,这里我们确定了batchSize,以及是否使用GPU

BATCH_SIZE = 64 DEVICE = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') print(DEVICE)

下图是我VSCODE的输出,证明我电脑上有GPU。

3、图像预处理模块的建立

下面将定义对数据的预处理模块,我们使用transforms对输入的图像(32*32)进行处理,这里我们将图像缩放至28*28,该操作是因为我们下面要定义的卷积神经网络的输入为28*28,为了更高效,你也可以在定义数据集的时候,直接将数据缩放至28*28,缩放后转换成tensor,这里训练集和验证集要做同样的处理,当然,针对你工程实践中的其他要求,还可以做其他的处理,在transforms.Compose中添加即可。

transform = transforms.Compose([ transforms.Resize((28, 28)), transforms.ToTensor(), ]) transform_test = transforms.Compose([ transforms.Resize((28, 28)), transforms.ToTensor(), ]) 4、数据的读取

通过绝对路径对训练集和验证集进行读取,读取的同时做上面定义的预处理操作,datasets的方便之处就在于,他会自动加载图片与标签,你的每一个类别的文件夹名就是该图像的标签,非常的方便,非常的NICE。

#读取数据 dataset_train = datasets.ImageFolder('D:/PROJECTS/pythonProject/data/Train', transform) dataset_test = datasets.ImageFolder('D:/PROJECTS/pythonProject/data/Validation',transform_test) # 读取数据 print(dataset_train.imgs)

由下图可以看到,datasets自动确定了图像的类别,并给每个类别分配索引。相当的OK。

未完待续。。。

【深度学习】纯干货之如何使用pytorch训练自己的数据(二)

传送门:https://blog.csdn.net/herocheney/article/details/118698483



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3