背景知识
本篇blog和我的上一篇blog介绍tensorflow加载数据形成对比这两篇blog所用到的数据完全一致,只不过一个是使用tensorflow进行加载数据,一个使用pytorch进行加载数据。
在 深度学习中, 数据的预处理占据了我们在训练过程中的一大部分,如何利用不同的库加载我们的数据显得尤为重要。因此本次blog将结合pytorch==1.3.0中数据加载部分官方文档讲述如何加载我们自己标注的数据和标签。
这里为什么要以pytorch加载数据,是因为最近发现一个比较有趣的事情,在更新pytorch==1.3.0以后,发现在pytorch官方演示中可以直接得到向量对向量的导数,在之前版本只能是离散点(标量)对向量求导,可能是官方优化了变量的fn属性吧,官方介绍了是求解雅可比矩阵的形式。
# 这个代码在pytorch < 1.3.0时,会报错
import torch
x = torch.ones(3,requires_grad=True)
a = torch.tensor([1.,2,3],requires_grad=True)
y = torch.mul(x,a)
y.backward(x)
print(x.grad)
测试环境
- 操作系统:Windows10
- 深度学习框架:pytorch ==1.3.0 or plus
- IDE: Pycharm
自定义数据格式介绍
在 深度学习中, 本人感兴趣的是图像这一块的领域,因此数据将以图像分类为例,进行演示和说明。
数据下载的链接为 演示数据下载
简单看一下数据的存储的方式,数据存储的方式的目录结构为:
这里和上一篇blog的数据形式完全一致

可以看到每张图片的父节点目录就是他们分类的结果,而每个文件夹里面的内容就是分类的图片。在我们准备好数据之后就可以开始我们的数据加载部分的操作了。
自定义数据加载
在pytorch == 1.3.0中需要使用到的数据加载类/函数有:
# 需要继承自pytorch设置的类的Dataset
from torch.utils.data import Dataset
# 设置打乱顺序和batch的DataLoader
from torch.utils.data import DataLoader
# 对图像处理中的预处理类对象设置(这里我们不是用这个,我们自定义的函数预处理函数)
from torchvision import transforms
这里注意一点,在继承Dataset时,一定需要实现两个虚函数
class CustomerDataset(Dataset):
"""Face Landmarks dataset."""
def __init__(self):
pass
def __len__(self):
#return
pass
def __getitem__(self, idx):
# return
pass
有了上面的函数介绍,现在开始介绍操作步骤:
- 得到图像的路径和标签,
- 实现数据读取sample操作
- 打乱得到的数据并设置
batch_size
from __future__ import print_function,absolute_import,unicode_literals,division
import torch
from torch.utils.data import Dataset,DataLoader
from torchvision import transforms,utils
from skimage import io,transform
import pathlib
import

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



