首页 > 其他分享 >数据处理工具

数据处理工具

时间:2024-11-02 18:20:01浏览次数:3  
标签:__ utils torch batch transforms 数据处理 工具 data

PyTorch数据处理工具箱

torch.utils.data

  • Dataset
    抽象类,其他数据集类定义时需继承自该类,并覆写两个方法:getitem__和__len
  • DataLoader
    定义一个新的迭代器,实现批量batch读取,打乱shuffle数据和并行加速等功能
  • random_split
    将数据集随机拆分成给定长度的非重叠的新数据集
  • *sample
    多种采样函数

torch.utils.data.Dataset抽象类,自定义数据集需继承这个类,并实现两个函数__len__和__getitem__
torch.utils.data.DataLoader定义数据集迭代器,实现batch读取

class TestDataset(data.Dataset):
    def __init__(self):
        self.Data= np.asarray([[1,2],[3,4],[2,1],[3,4],[4,5]])
        self.Label= np.asarray([0,1,0,1,2])
    def __getitem__(self, index):
        txt= torch.from_numpy(self.Data[index]) # 将numpy转换成Tensor
        label= torch.tensor(self.Label[index])
        return txt,label
    def __len__(self):
        return len(self.Data)
# 使用DataLoader对数据集Dataset进行批量batch处理,同时进行shuffle和并行加速等操作
DataLoader(
    dataset,
    batch_size=1,
    shuffle=False,
    sampler=None, # 样本抽取
    batch_sampler=None,
    num_workers=0, # 多进程加载
    collate_fn=<function default_collate at 0x7f108ee01620>, # 多个样本拼接成一个batch的拼接方式
    pin_memory=False, # 是否将数据保存在pin memory区,加速加载到GPU
    drop_last=False, # 将多出的不足一个batch_size的数据丢弃
    timeout=0,
    worker_init_fn=None,
)

test= TestDataset()
test_loader=data.DataLoader(test, batch_size=2, shuffle=False, num_workers=2)
for i,traindata in enumerate(test_loader):
    data,label= traindata
# 可以像使用迭代器一样使用test_loader,不过由于他不是迭代器,使用iter()将其转换成迭代器并用next()遍历
iter(test_loader)
next(dataiter)

一般使用data.Dataset处理同一目录下的数据,若数据在不同目录下(不同目录表示不同类别),此时可用torchvision处理数据

torchvision

  • datasets
    继承自torch.utils.data.Dataset,提供常用数据集Mnist,Cifar10/100,ImageNet和COCO
  • models
    提供经典的网络结构和模型pretrained=True,如AlexNet,VGG,ResNet,Inception系列
  • transforms
    常用的数据预处理操作,主要对Tensor和PIL Image类型操作,当预处理有多个函数时,可用transforms.Compose将其组合
  • utils
    含有两个函数:make_grid将多张图像拼接在一个网格中,save_img将Tensor保存成图像

transforms 对 PIL.Image 常见操作

  1. Scale/Resize 调整尺寸,保持长宽比不变
  2. CenterCrop,RandomCrop,RandomSizeCrop 裁减图像
  3. Pad 填充
  4. ToTensor 将取值范围为[0,255]的PIL.Image或形状为(H,W,C)的ndarray
    转换成(C,H,W),取值范围为[0,1.0]的torch.FloatTensor
  5. RandomHorizontalFlip 图像随机水平翻转,翻转概率为0.5
  6. RandomVerticalFlip 图像随机垂直翻转
  7. ColorJitter 修改图像亮度,对比度和饱和度

transforms对 Tensor 常见操作

  1. Normalize 标准化
  2. ToPILImage 将Tensor转换成PIL.Image

transforms.Lambda()使用自定义lambda表达式,如每个像素加10:transforms.Lambda(lambda x:x.add(10))

当对数据集进行多个操作时,可通过Compose()将这些操作拼接,类似于nn.Sequential

transforms.Compose({
    # 将给定的PIL.Image进行中心切割,size可以是tuple或Integer
	transforms.CenterCrop(10),
	transforms.RandomCrop(20,padding=0),
	transforms.ToTensor(),
	transforms.Normalize(mean=(0.5,0.5,0.5),std=(0.5,0.5,0.5))
})

函数ImageFoldertorchvision.datasets中成员
当文件依据标签存储在不同文件夹下时,可以使用其直接构造出Dataset,ImageFolder会将文件夹名自动转换成序列

my_trans=transforms.Compose({
    transforms.RandomResizedCrop(224),
    transforms.RandomHorizontalFlip(224),
	transforms.ToTensor()
})
train_data= torchvision.datasets.ImageFolder("",transforms=my_trans)
train_loader= torch.utils.data.DataLoader(train_data, batch_size=8, shuffle=True)
for i_batch,img in enumerate(train_loader):
    if i_batch==0:
	    print(img[1])
		fig= plt.figure()
		grid= torchvision.utils.make_grid(img[0])
		plt.imshow(grid.numpy().transpose((1,2,0)))
		plt.show()
		utils.save_image(grid,'te.png')

标签:__,utils,torch,batch,transforms,数据处理,工具,data
From: https://www.cnblogs.com/sgqmax/p/18522291

相关文章

  • 神经网络工具nn
    实现神经网络torch将张量转换为torch.cuda.TensorFloat并在GPU上进行计算torch.autograd构建计算图并自动获取梯度torch.nn具有共享层和损失函数的神经网络库torch.optim通用优化算法神经网络基本结构网络层:神经网络的基本模型网络模型:层构成的网络损失函数:参数学习的......
  • 足球预测分析工具推荐:AI泊松分布预测系统
    一、引言工欲善其事必先利其器,足球预测准确与否,其要点在于工具的合适性,而在当今时代,足球预测的首选工具就非AI与泊松分布不可了,而鉴于AI系统的可拓展性,AI与泊松分布融合的预测模型已经成为了广大足球预测家与足球精算师的首选工具,因此,本文将介绍此类预测系统的原理以及其预测......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 轻松原创!短剧,带货视频AI自动批量混剪工具!
    今天再分享这个批量剪辑神器,非常适合短剧和带货短视频的制作,轻松过原创,提供了从视频分割、合成、混剪到格式转换的多项功能。以下是它的主要功能:视频分割与提取按时长或段数分割按镜头转场变化分割按语音内容自动分割提取无声视频或音频视频合成自动合成文......
  • 安卓Android 图片/Bitmap工具类
    图片/Bitmap工具类1、根据uri解码图片,通常用在从相册选择照片(1)此方法包含了压缩Bitmap,根据目标尺寸缩放等/***根据Uri解码图片**@paramselectedImage图片的Uri*@return解码后的Bitmap对象*@throwsFileNotFoundException如果文件找不......
  • 项目自动化构建工具——make与Makefile详解
    项目自动化构建工具——make与Makefile详解在软件开发过程中,项目自动化构建是提高开发效率、减少重复劳动、确保构建一致性的重要手段。make和Makefile作为Linux及类Unix系统中不可或缺的自动化构建工具,通过定义清晰的规则和依赖关系,极大地提高了软件项目的构建效率和可维......
  • 提升网站排名的SEO工具指南
    内容概要在当今数字时代,优化网站以提升搜索引擎排名已经成为每个企业和个人站长面临的重要挑战。随着网络信息的日益繁杂,如何在众多竞争对手中脱颖而出,吸引目标流量,是每个网站的核心任务。因此,使用合适的SEO工具变得尤为重要。这些工具不仅能够有效优化网站内容,还能帮助用户理......
  • 有效利用关键词研究工具提升网站流量的策略
    内容概要在当前信息泛滥的时代,关键词研究工具的重要性愈发突出。它们不仅能帮助我们识别和分析用户搜索行为,还能够精准地为网站内容定位,确保我们能够吸引并留住目标受众。关键词研究工具通过提供大量的数据,帮助站长和营销策略制定者更好地理解市场趋势、用户需求以及竞争对手......
  • Java实用类、工具类
    目录StringTokenizer和ScannerStringTokenizerScannerStringBuffer和StringBuilderStringBuilderStringBuffer时间与日期类Java8之前APIDateTimeZoneLocaleCalendarDateFormatSimpleDateFormat局限性Java8时间API表示日期和时间的类InstantLocalDateTime......