关键词:
Pytorch数据处理工具
概述
- torch.utils.data共有如下四个类。
- Dataset:是一个抽象类,其他的数据集需要继承这个类,并且覆盖其中的两个方法(
_getitem_
,_len_
)。 - DataLoader:定义一个新的迭代器,实现批量(batch)读取,打乱数据(shuffle)并且提供并行加速等功能。
- random_split:把数据集随机拆分为给定长度的非重叠的新数据集。
- sampler:多种采样函数
- Torchvision是PyTorch的一个视觉处理工具包,包括四个子类,如下
- dataset:提供常用的数据集的加载,设计上都是继承自torch.utils.data.Dataset,主要包括MMIST、ImageNet、COCO等
- models:提供深度学习中的各种经典的网络结构以及训练好的模型,包括AlexNet、VGG、ResNet、Inception等
- transforms:常用的数据预处理操作,主要包括对Tensor及PIL Image对象的操作
- utils:包含两个函数,一个是make_grid,它能将多张图片拼接在一个网格中;另一个是save_img,它能将Tensor保存成图片
utils.data简介
utils.data 包括Dataset和DataLoader。torch.utils.data.Dataset为抽象类。自定义的数据集需要继承这个类,并且实现两个函数(_getitem_
,_len_
)前者通过索引获取数据和标签,后者提供数据的大小。_getitem_
一次只能获取一个数据,所以需要通过torch.utils.daata.DataLoader来定义一个新的迭代器,实现批量(batch读取)。
import torch
from torch.utils import data
import numpy as np
# 基于基类Dataset,自定义一个数据集及对应的标签
class TestDataset(data.Dataset): # 继承Dataset
def __init__(self):
self.Data = np.asarray([[1, 2], [3, 4], [5, 6]])
self.Label = np.asarray([0, 1, 0])
def __getitem__(self, item):
txt = torch.from_numpy(self.Data[item])
label = torch.tensor(self.Label[item])
return txt,label
def __len__(self):
return len(self.Data)
# 获取数据集
test = TestDataset()
print(test[2]) # 相当于调用了__getitem__(2)
print(test.__len__())
以上tuple返回,每次只返回一个样本,实际上,Dataset只负责数据的抽取,调用一次__getitem__只返回一个样本。如果希望批处理,还需呀同时进行shuffle和并行加速等操作,可选择DataLoader。格式如下:
data.DataLoader(
dataset=test,
batch_size=2,
shuffle=False,
sampler=None,
batch_sampler=None,
num_workers=0,
pin_memory=False,
drop_last=False,
timeout=0,
worker_init_fn=None,
)
参数说明
- dataset:加载的数据集
- batch_size:批大小
- shuffle:是否将数据打乱
- sampler:样本抽样
- num_workers:使用多进程加载的进程数,0代表不使用多进程
- pin_memory:是否将数据保存在pin memory区,pin memory转化到GPU会更快
- drop_last:dataset中的数据个数可能不是batch_size的整数倍,drop_last为True会将多出来不足一个batch的数据丢弃。
torchvision简介
torchvision有四个功能模块:model、datasets、transforms和utils。下面主要介绍使用 datasets的ImageFolder处理的自定义数据集,以及transforms对源数据进行预处理、增强等。
transforms
transforms提供了对PIL Images对象和Tensor对象的常用操作
- 对PIL Image的常见操作
- Scale/Resize:调整尺寸,长款比保持不变
- CenterCrop、ReandomCrop、RandomSizedCrop:裁剪图片,CenterCrop、ReandomCrop在crop时候是固定size,RandomSizedCrop则是random size的crop
RandomSizedCrop变换已弃用,RandomResizedCrop代替
- pad:填充
- ToTensor:把一个取值范围为[0,255]的PIL.Image转那位为Tensor。形状为(H,W,C)的Numpy.ndarray转化成形状为[H,W,C],取值范围为[0,1,0]的torch.FloatTensor
- RandomHorizontalFlip:图像随机水平翻转,翻转概率为0.5
- RandomVerticalFlip:图像随机垂直翻转
- ColorJitter:修改亮度、对比度和饱和度
- 对Tensor的常见操作
- Normalize:标准化,即,减均值,除以标准差
- ToPILImage:将Tensor转化为PILImage
如果要对数据集尽心多个操作,可以通过Compose将这些操作像管道一样拼接起来,类似于nn.Sequential如下:
transforms.Compose([
transforms.CenterCrop(10),
transforms.RandomCrop(20, padding=0),
transforms.ToTensor()
])
ImageFolder
当文件依据标签处于不停的文件下,如
——data
|——data1
|——001.jpg
|——002.jpg
|——003.jpg
|——data2
|——001.jpg
|——006.jpg
我们可以利用torchvision.datasets.ImageFolder来直接构造除dataset,代码如下
loader = torchvision.datasets.ImageFolder(path)
loader = data.DataLoader(dataset)
ImageFolder会自动将目录中的文件夹名自动转化成序列,当DataLoader载入时,标签自动就是整数序列了。
方法一
my_train = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()
])
train_data = datasets.ImageFolder('./data/train_neg', my_train)
train_loader = data.DataLoader(train_data, batch_size=6, shuffle=False)
for i_batch, img in enumerate(train_loader):
方法二
my_train = transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()
])
train_data = datasets.ImageFolder('./data/train_neg', my_train)
train_loader = data.DataLoader(
dataset=train_data,
shuffle=False,
batch_size=6
)
for i_batch, img in enumerate(train_loader):
pytorch入门pytorch神经网络工具(代码片段)
Pytorch神经网络工具前向传播反向传播神经网络工具箱nnnn.Modulenn.funtional优化器动态修改学习率核心组件层:神经网络的基本结构,将输入张量幻化为输出张量模型:层组成的网络损失函数:参与学习的目标函数... 查看详情
pytorch从入门到精通100讲-pytorch张量从概念到应用(代码片段)
PyTorch张量的创建与基本类型0导读在我们不知道什么是深度学习计算框架时,我们可以把PyTorch看做是Python的第三方库,在PyTorch中定义了适用于深度学习的张量Tensor,以及张量的各类计算。就相当于NumPy中定义的Array和对应的科学... 查看详情
超详细pytorch入门教程(代码片段)
Pytorch入门教程(二)Pytorch入门教程(一)1.张量Tensor2.Pytorch中创建张量3.Pytorch中tensor的常用方法4.tensor的数据类型5.tensor的其他操作Pytorch入门教程(一)请参考:【超详细】Pytorch入门教程(一)... 查看详情
自然语言处理pytorch基础入门(必备基础知识)(代码片段)
PyTorch基础实践PyTorch基础安装PyTorch创建张量张量类型和大小张量操作索引,切片和连接张量和计算图CUDA张量练习Solutions总结PyTorch基础在本书中,我们广泛地使用PyTorch来实现我们的深度学习模型。PyTorch是一个开源、社区... 查看详情
对比学习:《深度学习之pytorch》《pytorch深度学习实战》+代码
PyTorch是一个基于Python的深度学习平台,该平台简单易用上手快,从计算机视觉、自然语言处理再到强化学习,PyTorch的功能强大,支持PyTorch的工具包有用于自然语言处理的AllenNLP,用于概率图模型的Pyro,扩展了PyTorch的功能。通... 查看详情
pytorch使用cifar10数据集进行图片分类+pytorch基本入门知识总结(代码片段)
更好的阅读效果和体验:https://wyqz.top/p/1888017128.htmlGPU相关检查GPU是否工作importtorchtorch.cuda.is_available()Dataset可以继承Dataset来制作自己的数据类fromtorch.utils.dataimportDatasetfromPILimportImageimportosclassMyData( 查看详情
pytorch60分钟入门教程:数据并行处理(代码片段)
...个教程中,我们将学习如何用DataParallel来使用多GPU。通过PyTorch使用多个GPU非常简单。你可以将模型放在一个GPU:device=torch.device("cuda:0")model.to(device)然后,你可以复制所有的张量到GPU:mytensor=my_te 查看详情
pytorch入门与实战----pytorch入门(代码片段)
1.深度学习框架 pytorch与其他框架的比较pytorch的学习方法:课程安排:PyTorch是一个基于Python的科学计算库,它有以下特点:类似于NumPy,但是它可以使用GPU可以用它定义深度学习模型,可以灵活地进行深度学习模型的训练和使... 查看详情
pytorch入门(代码片段)
...ensor形式实现简单的线性回归Demo用神经网络进行气温预测数据处理1.较为复杂的构建形式(有助于理解)2.较为简单的构建方式使用模型预测手写体识别(线性模型)加载数据并查看数据格式化处理网络构建手写体... 查看详情
深度学习为什么选择pytorch?史上最详细pytorch入门教程(代码片段)
目录前言一、Pytorch介绍1.常见的深度学习框架2.Pytorch框架的崛起3.Pytorch与Tensorflow多方位比较二、Tensors1.Tensor的创建2.Tensor的操作3.Tensor与Numpy三、Autograd的讲解1.模型中的前向传播与反向传播2.利用autograd计算梯度四、构建神经网络... 查看详情
torchvision.transforms.compose()详解pytorch入门手册(代码片段)
简介torchvision是pytorch的一个图形库,它服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision.transforms主要是用于常见的一些图形变换。以下是torchvision的构成:1.torchvision.datasets:一些加载数据的函数及... 查看详情
超详细pytorch入门教程(代码片段)
Pytorch基本语法1认识Pytorch2Pytorch的基本元素操作3Pytorch的基本运算操作4关于TorchTensor和Numpyarray之间的相互转换5总结1认识Pytorch什么是Pytorch?Pytorch是一个基于Numpy的科学计算包,向它的使用者提供了两大功能.作为Numpy的替代者,... 查看详情
pytorch入门教程(代码片段)
Pytorch学习总结:Pytorch学习笔记总结_大数据与人工智能技术分享-CSDN博客Pytorch实战总结:pytorch实战教学(一篇管够)B站深度学习Pytorch实战总结1.张量Tensor张量是一种特殊的数据结构,与数组和矩阵非常相似。在PyTo... 查看详情
神经网络与深度学习pytorch入门——张量(代码片段)
...通过参考飞桨AIStudio-人工智能学习与实训社区 教程进行pytorch相关学习。目录一.概念:张量、算子二.使用pytorch实现张量运算1.2.1创建张量1.2.1.1指定数据创建张量1.2.1.2指定形状创建1.2.1.3指定区间创建1.2.2张量的属性1.2.2.1张... 查看详情
深度学习---从入门到放弃pytorch基础(代码片段)
深度学习—从入门到放弃(一)pytorchTensor类似于numpy的array,pandas的dataframe;在pytorch里的数据结构是tensor,即张量tensor简单操作1.Flattenandreshape###Originalz:tensor([[0,1],[2,3],[4,5],[6,7],[8,9],[10,11]])Flatte 查看详情
pytorch深度学习实践入门01(代码片段)
文章目录基于PyTorch的两层神经网络一、基于numpy的两层神经网络实现:二、基于PyTorch的两层神经网络实现:三、使用nn库实现两层神经网络四、自定义nnModules实现两层神经网络总结基于PyTorch的两层神经网络提示:在... 查看详情
pytorch学习笔记2.运行官网训练推理的入门示例(代码片段)
PyTorch学习笔记2.运行官网训练、推理的入门示例一、加载数据二、创建模型torch.nn.Sequential介绍:torch.nn.Linear3.torch.nn.ReLU三、调整模型参数四、保存模型五、加载模型一、加载数据首先引用必要的库:importtorchfromtorchimportnn... 查看详情
pytorch-入门与安装(代码片段)
tensorflowvspytorch 现在关于深度学习的框架很多,详情请百度,或者参考本文参考资料1,本文对比两种; tensorflow是当前最流行的深度学习框架,但是pytorch有后来居上的意思,其实二者有一定联系;联系:都是基于计算图... 查看详情