深度学习中数据加载(pytorch==1.3.0为例)

背景知识

    本篇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 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值