Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >PyTorch 中自定义数据集的读取方法

PyTorch 中自定义数据集的读取方法

原创
作者头像
陶陶name
发布于 2022-05-12 00:51:02
发布于 2022-05-12 00:51:02
9520
举报
文章被收录于专栏:陶陶计算机陶陶计算机

显然我们在学习深度学习时,不能只局限于通过使用官方提供的MNSIT、CIFAR-10、CIFAR-100这样的数据集,很多时候我们还是需要根据自己遇到的实际问题自己去搜集数据,然后制作数据集(收集数据集的方法有很多,这里就不过多的展开了)。这里只介绍数据集的读取。 1. 自定义数据集的方法: 首先创建一个Dataset类

在这里插入图片描述
在这里插入图片描述
在代码中: def init() 一些初始化的过程写在这个函数下 def len() 返回所有数据的数量,比如我们这里将数据划分好之后,这里仅仅返回的是被处理后的关系 def getitem() 回数据和标签补充代码 上述已经将框架打出来了,接下来就是将框架填充完整就行了,下面是完整的代码,代码的解释说明我也已经写在其中了# -*- coding: utf-8 -*- # @Author : 胡子旋 # @Email :1017190168@qq.com import torch import os,glob import visdom import time import torchvision import random,csv from torch.utils.data import Dataset,DataLoader from torchvision import transforms from PIL import Image class pokemom(Dataset): def __init__(self,root,resize,mode,): super(pokemom,self).__init__() # 保存参数 self.root=root self.resize=resize # 给每一个类做映射 self.name2label={} # "squirtle":0 ,"pikachu":1…… for name in sorted(os.listdir(os.path.join(root))): # 过滤掉文件夹 if not os.path.isdir(os.path.join(root,name)): continue # 保存在表中;将最长的映射作为最新的元素的label的值 self.name2label[name]=len(self.name2label.keys()) print(self.name2label) # 加载文件 self.images,self.labels=self.load_csv('images.csv') # 裁剪数据 if mode=='train': self.images=self.images[:int(0.6*len(self.images))] # 将数据集的60%设置为训练数据集合 self.labels=self.labels[:int(0.6*len(self.labels))] # label的60%分配给训练数据集合 elif mode=='val': self.images = self.images[int(0.6 * len(self.images)):int(0.8 * len(self.images))] # 从60%-80%的地方 self.labels = self.labels[int(0.6 * len(self.labels)):int(0.8 * len(self.labels))] else: self.images = self.images[int(0.8 * len(self.images)):] # 从80%的地方到最末尾 self.labels = self.labels[int(0.8 * len(self.labels)):] # image+label 的路径 def load_csv(self,filename): # 将所有的图片加载进来 # 如果不存在的话才进行创建 if not os.path.exists(os.path.join(self.root,filename)): images=[] for name in self.name2label.keys(): images+=glob.glob(os.path.join(self.root,name,'*.png')) images+=glob.glob(os.path.join(self.root, name, '*.jpg')) images += glob.glob(os.path.join(self.root, name, '*.jpeg')) print(len(images),images) # 1167 'pokeman\\bulbasaur\\00000000.png' # 将文件以上述的格式保存在csv文件内 random.shuffle(images) with open(os.path.join(self.root,filename),mode='w',newline='') as f: writer=csv.writer(f) for img in images: # 'pokeman\\bulbasaur\\00000000.png' name=img.split(os.sep)[-2] label=self.name2label[name] writer.writerow([img,label]) print("write into csv into :",filename) # 如果存在的话就直接的跳到这个地方 images,labels=[],[] with open(os.path.join(self.root, filename)) as f: reader=csv.reader(f) for row in reader: # 接下来就会得到 'pokeman\\bulbasaur\\00000000.png' 0 的对象 img,label=row # 将label转码为int类型 label=int(label) images.append(img) labels.append(label) # 保证images和labels的长度是一致的 assert len(images)==len(labels) return images,labels # 返回数据的数量 def __len__(self): return len(self.images) # 返回的是被裁剪之后的关系 def denormalize(self, x_hat): mean = [0.485, 0.456, 0.406] std = [0.229, 0.224, 0.225] mean = torch.tensor(mean).unsqueeze(1).unsqueeze(1) std = torch.tensor(std).unsqueeze(1).unsqueeze(1) # print(mean.shape, std.shape) x = x_hat * std + mean return x # 返回idx的数据和当前图片的label def __getitem__(self,idx): # idex-[0-总长度] # retrun images,labels # 将图片,label的路径取出来 # 得到的img是这样的一个类型:'pokeman\\bulbasaur\\00000000.png' # 然而label得到的则是 0,1,2 这样的整形的格式 img,label=self.images[idx],self.labels[idx] tf=transforms.Compose([ lambda x:Image.open(x).convert('RGB'), # 将t图片的路径转换可以处理图片数据 # 进行数据加强 transforms.Resize((int(self.resize*1.25),int(self.resize*1.25))), # 随机旋转 transforms.RandomRotation(15), # 设置旋转的度数小一些,否则的话会增加网络的学习难度 # 中心裁剪 transforms.CenterCrop(self.resize), # 此时:既旋转了又不至于导致图片变得比较的复杂 transforms.ToTensor(), transforms.Normalize(mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225]) ]) img=tf(img) label=torch.tensor(label) return img,label def main(): # 验证工作 viz=visdom.Visdom() db=pokemom('pokeman',64,'train') # 这里可以改变大小 224->64,可以通过visdom进行查看 # 可视化样本 x,y=next(iter(db)) print('sample:',x.shape,y.shape,y) viz.image(db.denormalize(x),win='sample_x',opts=dict(title='sample_x')) # 加载batch_size的数据 loader=DataLoader(db,batch_size=32,shuffle=True,num_workers=8) for x,y in loader: viz.images(db.denormalize(x),nrow=8,win='batch',opts=dict(title='batch')) viz.text(str(y.numpy()),win='label',opts=dict(title='batch-y')) # 每一次加载后,休息10s time.sleep(10) if __name__ == '__main__': main()

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
业界 | 黄仁勋亲自撰文怼上 TPU:P40速度比你快 2 倍,带宽是你的 10 倍
AI科技评论按:前不久谷歌发布了关于TPU细节的论文,称“TPU 处理速度比当前 GPU 和 CPU 要快 15 到 30 倍”。当时就有人对此种“比较”表示质疑,因其拿来的比较对象并非市场里性能最好的。 而昨晚(美国时间 4 月 10 日)英伟达 CEO 黄仁勋就亲自撰文回应了这一“比较”,文章第一段就以谷歌 TPU 开头,炮击意图十分明显,随后更是扔出了 Tesla P40 GPU 与 TPU 的性能对比图,可谓针尖对麦芒。 不过 P40 和 TPU 的售价差距很大(P40 24GB版本售价5千多美
AI科技评论
2018/03/12
1.2K0
业界 | 黄仁勋亲自撰文怼上 TPU:P40速度比你快 2 倍,带宽是你的 10 倍
【AI芯片争夺战】谷歌TPU率队,颠覆3350亿美元的半导体行业
【新智元导读】人工智能系统的加速正在从根本上重塑着每年创造了3350亿美元的半导体行业。计算机开始认识一切,从花草到人脸,从文本到声音,以及学会开车。统治了计算机行业近半个世纪的摩尔定律正在受到挑战,计算性能的提升不再依赖于晶体管数量的增长,还有专用负载芯片产业的蓬勃。英特尔面临着英伟达、微软、苹果、谷歌等巨头以及CEVA、Eyeriss、寒武纪、华为等 AI 芯片新玩家不同方向的围攻。 人工智能技术尤其是深度学习的兴起,让各大公司都注意到必须要填补的计算力鸿沟。越来越多的研究人员开始重新思考计算的本质,从
新智元
2018/03/22
9060
【AI芯片争夺战】谷歌TPU率队,颠覆3350亿美元的半导体行业
提问黄仁勋:5年内GPU定会赢过TPU,中国计算机产业已居世界一流
【新智元导读】英伟达创始人黄仁勋在9月26日GTC北京的主旨演讲中,隆重介绍了NVIDIA Tensor RT 3。今天英伟达的官方博客则着重介绍了NVIDIA深度学习加速器(NVDLA)这一免费开源架构。在会后新智元对黄仁勋的专访中,黄仁勋谈到了谷歌TPU与Tensor RT 3 的区别,并表示中国整个计算机产业的技术水平已经是世界一流。 GPU 不光能做 Tensor 的处理,还能做很多其他任务 2017年5月GTC 美国的大会上,黄仁勋宣布,将开源 Xavier DLA 供所有开发者使用、修改。初期版
新智元
2018/03/22
1.1K0
提问黄仁勋:5年内GPU定会赢过TPU,中国计算机产业已居世界一流
黄仁勋:英伟达8年算力增长1000倍,能耗降低350倍!下一代Rubin GPU曝光
6月2日晚间,英伟达(NVIDIA)CEO黄仁勋在中国台湾大学综合体育馆发表主题为“开启产业革命的全新时代”的主题演讲。在长达两个小时的发言中,黄仁勋梳理并介绍了英伟达如何推动人工智能(AI)演进,以及AI如何变革工业。同时,他还宣布,Blackwell芯片现已开始投产,2025年将会推出Blackwell Ultra GPU芯片。下一代AI平台名为“Rubin”,将集成HBM4内存,将于2026年发布。
芯智讯
2024/06/07
3060
黄仁勋:英伟达8年算力增长1000倍,能耗降低350倍!下一代Rubin GPU曝光
高调发布史上最大GPU后,英伟达却宣布暂停自动驾驶路测
英伟达股价瞬间下跌3.8%。 北京时间3月28日凌晨,英伟达创始人&CEO黄仁勋在CTC 2018(英伟达CPU技术大会)上发表演讲,并发布了迄今最大的GPU——DGX-2。但令人震惊的是,黄仁勋紧接着宣布,暂定自动驾驶路测。 随后英伟达股价应声下跌3.8%。 高调发布史上最大GPU后 英伟达却宣布暂停自动驾驶研发 大会一开场,黄仁勋便推出光线追踪RTX技术(ray-tracing),该技术可提供电影级画质的实时渲染,渲染出逼真的反射、折射和阴影画面。 随后,英伟达发布了新一代显卡NVIDIA Quadro
镁客网
2018/05/29
5100
追踪报道:谷歌 TPU 处理器实现 4 大机器学习突破
【新智元导读】谷歌的论文《数据中心的 TPU 性能分析》(In-Datacenter Performance Analysis of a Tensor Processing Unit)从技术角度详述了 TPU 能给机器学习带来怎样的提升。Infoworld 的高级编辑 Serdar Yegulalp 撰文以深入浅出的方式简述了 TPU 对于机器学习的意义,以及对于谷歌的意义。作者认为,TPU 使得机器学习过程中的分工更加明确,但谷歌近期内不会将其整合到云服务中。结合新智元此前的报道,外界虽然认可 TPU 的
新智元
2018/03/27
7010
英伟达CEO手撕谷歌TPU:P80性能比它强2倍!
李杉 李林 编译整理 量子位 出品 | 公众号 QbitAI 上周,Google发表论文,详解了神经网络推断专用芯片TPU的架构,还展示了一些性能数据,比如说:在推断任务中,TPU平均比英伟达的Tes
量子位
2018/03/22
7700
英伟达CEO手撕谷歌TPU:P80性能比它强2倍!
黄仁勋GTC主旨演讲:从摩尔定律的尽头到深度学习大爆炸,发布新一代GPU,市值突破700亿美元( PPT)
【新智元导读】英伟达CEO黄仁勋一年一度的GTC主旨演讲凌晨结束,新智元第一时间带来了深度报道(带PPT的)。本次大会最受关注的是,英伟达发布了新一代的GPU,涉及不少新的技术,比如tensor。此外, 还有“面向TensorFlow 的TensorRT”、“英伟达GPU云”“AI 研究基础设施DGX-1和DGX Station”、“开源 Xavier DLA ” 等等。黄仁勋从摩尔定律走向消亡谈起,一直说到深度学习的大爆炸。一起来看看股票涨幅“不可阻挡”的英伟达都有哪些布局。 5月11日凌晨,英伟达CEO
新智元
2018/03/28
1.1K0
黄仁勋GTC主旨演讲:从摩尔定律的尽头到深度学习大爆炸,发布新一代GPU,市值突破700亿美元( PPT)
拿着锤子找钉子,数字芯片领导者比特大陆进军人工智能
占领了虚拟货币芯片80%以上的市场后,比特大陆开始拿着高性能计算芯片设计的“锤子“探索新的”钉子“,而深度学习计算芯片无疑是其中最大的一颗。 随着大数据发展、深度学习算法和计算技术的突破,人工智能掀起了新的时代浪潮。同时,全球科技巨头如Google, Facebook, Microsoft,国内BAT都在抢占布局AI市场。而芯片和算法,被视为是人工智能产业的重要技术支撑。 近日,北京比特大陆科技有限公司(以下简称“比特大陆”/BITMAIN)推出了人工智能品牌SOPHON(算丰),并重磅发布了面向
大数据文摘
2018/05/24
7740
英伟达颠覆CPU!长发黄仁勋杀入英特尔地盘,Arm架构CPU性能高10倍
今年,「GPU大哥」英伟达居然「不讲武德」,发布一个基于Arm架构的新数据中心CPU Nvidia Grace,它将直接挑战英特尔在服务器和数据中心计算领域的主导地位。
新智元
2021/04/15
4740
CPU、GPU、TPU、NPU等到底是什么?
NPU即神经网络处理器(Neural network Processing Unit)
Jasonangel
2021/05/28
5.3K0
【英伟达成为谷歌的对手】谷歌 TPU 第二代PK英伟达胜算几何?
【新智元导读】随着谷歌推出第二代既能推理又能训练的 TPU 芯片,搜索巨头和 AI 芯片商英伟达势必要决出高下。智能时代,英伟达和谷歌的前景如何?The Motley Fool 刊登分析文章,精辟总结指出两者强弱。 为了在人工智能市场抢占更大的份额,英伟达和 Alphabet 这两家公司结成了意想不到的对手。到目前为止,Alphabet 一直在谷歌云平台使用英伟达的 GPU 加速其各种 AI 应用,但现在看来,这家巨头很是有意自己单独切入这块有着巨额利润的空间。 就让我们仔细看看英伟达和谷歌在人工智能上的渊
新智元
2018/03/27
8710
【I/O大会】谷歌解密打败李世石武器TPU,可将摩尔定律提速7年
【新智元导读】谷歌于北京时间今日凌晨召开的I/O大会上公布了其传闻已久的定制专用集成电路“Tensor Processing Unit”(TPU),TPU 专为谷歌深度学习平台 TensorFlow 打造。谷歌表示已在公司内部使用 TPU 超过一年。这一消息进一步印证了面向机器学习专用的处理器是芯片行业的发展趋势,而且企业尤其是使用人工智能技术的大企业对“专用芯片”的需求可能比芯片制造厂商预计得还要深。 AlphaGo 打败李世石的秘密武器 谷歌基础设施副总裁 Urs Holzle 在 I/O 发布会上告
新智元
2018/03/22
8430
【I/O大会】谷歌解密打败李世石武器TPU,可将摩尔定律提速7年
谷歌发论文披露TPU详细信息,比GPU、CPU快15-30倍
△ TPU的印刷电路板 李杉 编译整理 量子位 报道 | 公众号 QbitAI 自从Google去年透露自己开发了一款名为TPU的专用芯片,用于提高人工智能计算任务的执行效率,关于这种新芯片的猜测就从未停止。 今天,Google终于披露了关于TPU的更多信息。除了发表一篇有75位联合作者的论文《In-Datacenter Performance Analysis of a Tensor Processing UnitTM》外,文章的第四作者David Patterson还在美国国家工程院的活动上发表了演
量子位
2018/03/22
6560
谷歌发论文披露TPU详细信息,比GPU、CPU快15-30倍
详解AI加速器(四):GPU、DPU、IPU、TPU…AI加速方案有无限种可能
选自Medium作者:Adi Fuchs 机器之心编译 在上一篇文章中,前苹果工程师、普林斯顿大学博士 Adi Fuchs 聚焦 AI 加速器的秘密基石:指令集架构 ISA、可重构处理器等。在这篇文章中,我们将跟着作者的思路回顾一下相关 AI 硬件公司,看看都有哪些公司在这一领域发力。 这是本系列博客的第四篇,主要介绍了 AI 加速器相关公司。全球科技行业最热门的领域之一是 AI 硬件, 本文回顾了 AI 硬件行业现状,并概述相关公司在寻找解决 AI 硬件加速问题的最佳方法时所做的不同赌注。 对于许多 AI
机器之心
2022/03/04
1.9K0
谷歌宣布开放Cloud TPU,每小时6.5美元,英伟达还坐得住吗?
Cloud TPU意图优化计算受限问题,并让机器学习模型训练更加容易。 当地时间凌晨6点多,Google Brain负责人、谷歌首席架构师Jeff Dean连发10条Twitter,只想告诉人们一件事情——我们推出了Cloud TPU的beta版,第三方厂商和开发者可以每小时花费6.5美元来使用它,不过数量有限,你需要先行填表申请。 一直以来,TPU都被用于谷歌内部产品,随着Cloud TPU的开放,不管是云服务还是AI芯片市场,都将迎来一场变动。 谷歌开放Cloud TPU测试版每小时6.5美元 数量有限
镁客网
2018/05/29
6630
Google TPU云可能会与英伟达合作
英伟达首席执行官黄仁勋坚持认为,用于训练机器学习模型的开发工具的处理能力和云计算能力,使得人工智能在计算平台和数据框架中无处不在。黄预测说,这场人工智能革命的一个后果将是“AI的寒武纪大爆发”,从数十亿的设备联网设备到无人驾驶汽车。 除了在今年GTC大会上发布的一系列与AI相关的产品和方案外,黄仁勋在5月24日的博客文章了,介绍了Google最新版本的TensorFlow机器学习框架——Tensor云计量处理单元,也就是TPU 。 黄先生表示:英伟达的新Volta GPU架构和谷歌的TPU结合在一起,说明
GPUS Lady
2018/04/02
6350
喊话黄仁勋: 在TPU这事上谷歌高调吗?
AI科技评论按:谷歌毕竟就只是发了一篇描述一个数年前就开始的项目的内部结构和一些性能参数的论文和一篇提炼了其中一些内容的博文而已,但前两天TPU的发布却让黄仁勋亲自出来发声要把Google怼回去,天知道他一边怼心里会不会一边有那么一种“我为什么要跟他纠结于几倍还是几十倍性能这种破事上……本文作者在这里想说,在TPU这件事上,谷歌一点也不高调。 距离Google发布TPU也有一个星期了,掐指一算,国内众媒体和大众的解读的热情也差不多该降下来了。我想在这里说点大家可能不愿意听的。 这次谷歌公布了许多非常详细的
AI科技评论
2018/03/12
9990
喊话黄仁勋: 在TPU这事上谷歌高调吗?
【深度】AI 时代,谷歌 TPU 难以颠覆 GPU 市场优势
【新智元导读】智能时代芯片市场格局一变再变,谷歌推出 TPU 引发新一轮讨论,谁将领跑芯片市场?看几个典型产品:TPU 仅供谷歌内部使用;IBM TrueNorth 离商用还有距离;中国的寒武纪是国际首个深度学习专用处理器芯片,市场表现值得期待;概率芯片以微小计算精度为代价实现能耗降低,是芯片市场一匹黑马;FPGA 凭其性价比有望占领市场;目前 GPU 用户覆盖率最广。 智能时代就要到来,芯片市场格局一变再变。两个典型例子:引领处理器市场 40 多年的英特尔 2015 年底收购完 Altera,今年 4 月
新智元
2018/03/22
1.1K0
【深度】AI 时代,谷歌 TPU 难以颠覆 GPU 市场优势
柯洁中盘再败!谷歌乘AlphaGo之势强推TPU,与英伟达必有一战
【新智元导读】人机对战第二场,柯洁认输,AlphaGo中盘获胜将比分改写为2:0,TPU可谓是本次AlphaGo升级的秘密武器。 由此,许多人认为,谷歌与英伟达必有一战。谷歌已经开始向中国市场上的企业和开发者兜售自己的TPU,加上TensorFlow和谷歌云等标志性业务。这对在深度学习上获利丰厚的英伟达来说可能并不是一件好事。 柯洁又输了,与AlphaGo的对决比分被改写为0:2 ! AlphaGo变得更强大了,此前DeepMind和谷歌团队在新闻发布会上说,。除了算法上的改进之外,他们也特别强调了谷歌云和
新智元
2018/03/28
8510
柯洁中盘再败!谷歌乘AlphaGo之势强推TPU,与英伟达必有一战
推荐阅读
业界 | 黄仁勋亲自撰文怼上 TPU:P40速度比你快 2 倍,带宽是你的 10 倍
1.2K0
【AI芯片争夺战】谷歌TPU率队,颠覆3350亿美元的半导体行业
9060
提问黄仁勋:5年内GPU定会赢过TPU,中国计算机产业已居世界一流
1.1K0
黄仁勋:英伟达8年算力增长1000倍,能耗降低350倍!下一代Rubin GPU曝光
3060
高调发布史上最大GPU后,英伟达却宣布暂停自动驾驶路测
5100
追踪报道:谷歌 TPU 处理器实现 4 大机器学习突破
7010
英伟达CEO手撕谷歌TPU:P80性能比它强2倍!
7700
黄仁勋GTC主旨演讲:从摩尔定律的尽头到深度学习大爆炸,发布新一代GPU,市值突破700亿美元( PPT)
1.1K0
拿着锤子找钉子,数字芯片领导者比特大陆进军人工智能
7740
英伟达颠覆CPU!长发黄仁勋杀入英特尔地盘,Arm架构CPU性能高10倍
4740
CPU、GPU、TPU、NPU等到底是什么?
5.3K0
【英伟达成为谷歌的对手】谷歌 TPU 第二代PK英伟达胜算几何?
8710
【I/O大会】谷歌解密打败李世石武器TPU,可将摩尔定律提速7年
8430
谷歌发论文披露TPU详细信息,比GPU、CPU快15-30倍
6560
详解AI加速器(四):GPU、DPU、IPU、TPU…AI加速方案有无限种可能
1.9K0
谷歌宣布开放Cloud TPU,每小时6.5美元,英伟达还坐得住吗?
6630
Google TPU云可能会与英伟达合作
6350
喊话黄仁勋: 在TPU这事上谷歌高调吗?
9990
【深度】AI 时代,谷歌 TPU 难以颠覆 GPU 市场优势
1.1K0
柯洁中盘再败!谷歌乘AlphaGo之势强推TPU,与英伟达必有一战
8510
相关推荐
业界 | 黄仁勋亲自撰文怼上 TPU:P40速度比你快 2 倍,带宽是你的 10 倍
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档