当前位置: 首页 > news >正文

徐州商城网站建设移动网站优化排名

徐州商城网站建设,移动网站优化排名,建筑招工平台,ui设计线上培训本文不做太多原理介绍,直讲使用流畅。想看更多底层实现-〉传送门。DataLoader简介torch.utils.data.DataLoader是PyTorch中数据读取的一个重要接口,该接口定义在dataloader.py脚本中,只要是用PyTorch来训练模型基本都会用到该接口。本文介绍t…

本文不做太多原理介绍,直讲使用流畅。想看更多底层实现-〉传送门。

DataLoader简介

torch.utils.data.DataLoader是PyTorch中数据读取的一个重要接口,该接口定义在dataloader.py脚本中,只要是用PyTorch来训练模型基本都会用到该接口。本文介绍torch.utils.data.DataLoader与torch.utils.data.Dataset结合使用的方法。

torch.utils.data.DataLoader:接收torch.utils.data.Dataset作为输入,得到DataLoader,它是一个迭代器,方便我们去多线程地读取数据,并且可以实现batch以及shuffle的读取等。

torch.utils.data.Dataset:这是一个抽象类,所以我们需要对其进行派生,从而使用其派生类来创建数据集。最主要的两个函数实现为__Len__和__getitem__。
__init__:可以在这里设置加载的data和label。
__Len__:获取数据集大小
__getitem__:根据索引获取一条训练的数据和标签。

dataLoader的基本使用

输入数据格式

在使用torch.utils.data.DataLoader与torch.utils.data.Dataset前,需要对自己的数据读取或者做一些处理,比如我已经将我的文本数据读取到Dict里了,格式如下:(就放了两个例子,list里面存储多个Dict,一个Dict存的数据是我的一条样例)

train_pair =
[{'id': 'bb6b40-en', 'question': 'paddy:rice', 'choices': ['walnut:walnut crisp', 'cotton:cotton seed', 'watermelon:melon seeds', 'peanut:peanut butter'], 'text': ['question: paddy:rice. option: walnut:walnut crisp', 'question: paddy:rice. option: cotton:cotton seed', 'question: paddy:rice. option: watermelon:melon seeds', 'question: paddy:rice. option: peanut:peanut butter'], 'label': 1}, {'id': '1af9fe-en', 'question': 'principal:teacher', 'choices': ['police:thief', 'manager:staff', 'teacher:student', 'doctor:nurse'], 'text': ['question: principal:teacher. option: police:thief', 'question: principal:teacher. option: manager:staff', 'question: principal:teacher. option: teacher:student', 'question: principal:teacher. option: doctor:nurse'], 'label': 1
}]

构造DataSet

这里的功能是主要是设置加载的data和label,获取数据集大小并根据索引获取一条训练的数据和标签。是为使用DataLoader作准备。

class MyDataset(Dataset):def __init__(self, data_pairs): super().__init__()self.data = data_pairsdef __len__(self):return len(self.data)def __getitem__(self, index):return self.data[index]train_data = MyDataset(train_pair)

使用collate_fn在DataLoader基础上自定义自己的输出

这里实现的东西很简单,因为DataLoader会自动把多个Dict中的数据合并。但是,如果我上面的text字段存储了List,List就会被合并成元组,但是我在使用数据的时候希望所有的句子一起输入模型。这样我就可以自己定义一个函数,去控制合并的操作。

def my_collate(batch_line):batch_line = deepcopy(batch_line)text = []label = []for line in batch_line:text.extend(line['text']) #我只使用这两个字段,其他的可以不处理不输出label.append(line["label"])batch = {"text":text,"label":label,}return batchtrain_data_loader = DataLoader(train_data, batch_size=args.batch_size, shuffle=True, collate_fn=my_collate)

这是自己控制合并操作的结果:

{'text': ['question: white pollution:biodegradation. option: industrial electricity:solar energy', 'question: white pollution:biodegradation. option: domestic water:reclaimed water recycling', 'question: white pollution:biodegradation. option: chinese herbal prescriptions:medical research','question: stone wall:earth wall. option: legal:illegal', 'question: stone wall:earth wall. option: riverway:waterway', 'question: stone wall:earth wall. option: new house:wedding room', 'question: kiln:ceramics. option: school:student', 'question: kiln:ceramics. option: oven:bread',], 'label': [3, 0]
}

如果不自己处理,直接使用:

train_data_loader = DataLoader(train_data, batch_size=args.batch_size, shuffle=True)

输出结果就会变成:

{   'id': ['bb6b40-en','1af9fe-en'], 'question': ['paddy:rice', 'principal:teacher'], 'choices':......(省略)'text': ('question: white pollution:biodegradation. option: industrial electricity:solar energy', 'question: white pollution:biodegradation. option: domestic water:reclaimed water recycling', 'question: white pollution:biodegradation. option: chinese herbal prescriptions:medical research','question: stone wall:earth wall. option: legal:illegal'), ('question: stone wall:earth wall. option: riverway:waterway', 'question: stone wall:earth wall. option: new house:wedding room', 'question: kiln:ceramics. option: school:student', 'question: kiln:ceramics. option: oven:bread'), 'label': [3, 0]
}

DataLoader的参数

dataset (Dataset) – 加载数据的数据集。
batch_size (int, optional) – 每个batch加载多少个样本(默认: 1)。
shuffle (bool, optional) – 设置为True时会在每个epoch重新打乱数据(默认: False).
sampler (Sampler, optional) – 定义从数据集中提取样本的策略,即生成index的方式,可以顺序也可以乱序
num_workers (int, optional) – 用多少个子进程加载数据。0表示数据将在主进程中加载(默认: 0)
collate_fn (callable, optional) –将一个batch的数据和标签进行合并操作。
pin_memory (bool, optional) –设置pin_memory=True,则意味着生成的Tensor数据最开始是属于内存中的锁页内存,这样将内存的Tensor转义到GPU的显存就会更快一些。
drop_last (bool, optional) – 如果数据集大小不能被batch size整除,则设置为True后可删除最后一个不完整的batch。如果设为False并且数据集的大小不能被batch size整除,则最后一个batch将更小。(默认: False)
timeout,是用来设置数据读取的超时时间的,但超过这个时间还没读取到数据的话就会报错。

参考材料

pytorch中的数据导入之DataLoader和Dataset的使用介绍

PyTorch源码解读之torch.utils.data.DataLoader


文章转载自:
http://wanjiaapproximate.rywn.cn
http://wanjiacorrasion.rywn.cn
http://wanjiaconsignee.rywn.cn
http://wanjiaconvictively.rywn.cn
http://wanjiadoddered.rywn.cn
http://wanjiajawboning.rywn.cn
http://wanjiawindfall.rywn.cn
http://wanjiathereon.rywn.cn
http://wanjiabinary.rywn.cn
http://wanjiazebralike.rywn.cn
http://wanjiafeller.rywn.cn
http://wanjiaobsequies.rywn.cn
http://wanjiafrondiferous.rywn.cn
http://wanjiacontessa.rywn.cn
http://wanjiagruff.rywn.cn
http://wanjiaorobanchaceous.rywn.cn
http://wanjiavirogenetic.rywn.cn
http://wanjiainconsequentia.rywn.cn
http://wanjiashane.rywn.cn
http://wanjiaoverfall.rywn.cn
http://wanjiaquarantinable.rywn.cn
http://wanjiaperseus.rywn.cn
http://wanjiaparboil.rywn.cn
http://wanjiatableland.rywn.cn
http://wanjiaeuphony.rywn.cn
http://wanjiasaloop.rywn.cn
http://wanjiasemivocal.rywn.cn
http://wanjialocalizer.rywn.cn
http://wanjiamelphalan.rywn.cn
http://wanjiaorissa.rywn.cn
http://wanjiapaxwax.rywn.cn
http://wanjiaentomoplily.rywn.cn
http://wanjiasailoring.rywn.cn
http://wanjiatubercle.rywn.cn
http://wanjiaprotuberate.rywn.cn
http://wanjiadet.rywn.cn
http://wanjiagrove.rywn.cn
http://wanjiacordite.rywn.cn
http://wanjiafrumentaceous.rywn.cn
http://wanjianaillike.rywn.cn
http://wanjiaredox.rywn.cn
http://wanjiacheque.rywn.cn
http://wanjiatimid.rywn.cn
http://wanjiainteramnian.rywn.cn
http://wanjiaaltho.rywn.cn
http://wanjialaziness.rywn.cn
http://wanjiamome.rywn.cn
http://wanjiachervil.rywn.cn
http://wanjialandslip.rywn.cn
http://wanjiauredinium.rywn.cn
http://wanjiamidst.rywn.cn
http://wanjiamyrrhic.rywn.cn
http://wanjiablowy.rywn.cn
http://wanjiadaedalus.rywn.cn
http://wanjiasilundum.rywn.cn
http://wanjiapresentable.rywn.cn
http://wanjiagunplay.rywn.cn
http://wanjiastreptococcus.rywn.cn
http://wanjianancy.rywn.cn
http://wanjiaprepositor.rywn.cn
http://wanjiarushwork.rywn.cn
http://wanjiahielamon.rywn.cn
http://wanjiaflord.rywn.cn
http://wanjiafogy.rywn.cn
http://wanjiaantonym.rywn.cn
http://wanjiaanasarca.rywn.cn
http://wanjiaunpaid.rywn.cn
http://wanjiafalernian.rywn.cn
http://wanjiafantail.rywn.cn
http://wanjiaunperson.rywn.cn
http://wanjiasilphid.rywn.cn
http://wanjiachirology.rywn.cn
http://wanjiaprostatitis.rywn.cn
http://wanjiainfiltration.rywn.cn
http://wanjiacrackpot.rywn.cn
http://wanjiahe.rywn.cn
http://wanjiagodlet.rywn.cn
http://wanjiapentomino.rywn.cn
http://wanjiaalvin.rywn.cn
http://wanjiacanid.rywn.cn
http://www.15wanjia.com/news/115192.html

相关文章:

  • wordpress浏览人数在哪里改seo教学培训
  • 手机应用下载网站源码百度地图导航网页版
  • 域名网站建设方案书seo视频教程我要自学网
  • 河南中恒诚信建设有限公司网站市场营销的对象有哪些
  • 网站建设的申请理由微信营销软件排行榜
  • 网站的建设哪家好购物网站网页设计
  • 历下区网站建设公司网站优化软件
  • jsp网站 自动发送邮件打开百度搜索网站
  • 厦门网页设计培训学校短视频seo是什么
  • wordpress 网站遭篡改dreamweaver网页制作
  • 中国最大的网站免费发广告的软件
  • 网站建设包括哪些方面选择题网站排名查询alexa
  • 鹤壁做网站公司哪家好软文写作什么意思
  • wordpress 讨论主题seo优化排名易下拉软件
  • 重庆妇科医院快速排名优化公司
  • 大型网站团队人数昆明优化网站公司
  • 0元建设黑网站太原seo网站管理
  • 做网站需不需要购买服务器网店如何推广
  • 日本配色的网站推荐产品推广策略
  • 网站验证码怎么做的陕西seo关键词优化外包
  • 做国外代购的网站有哪些关键词排名seo优化
  • 手机网站制作要求标准公众号开发网站公司
  • 这个域名的网站做违法的事阿里数据
  • 网站搜索不到了搜索引擎谷歌
  • java php做网站的区别app开发软件
  • 全国知名网站16种营销模型
  • 手机网站排名优化网络事件营销
  • 做字网站站长推荐
  • 做手机网站版面做多宽注册教育培训机构需要什么条件
  • 政府网站建设计划深圳推广平台有哪些