DataLoader完整的参数表如下:
class torch.utils.data.DataLoader( dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=<function default_collate>, pin_memory=False, drop_last=False, timeout=0, worker_init_fn=None)
DataLoader在数据集上提供单进程或多进程的迭代器
几个关键的参数意思:
- shuffle:设置为True的时候,每个世代都会打乱数据集
- collate_fn:如何取样本的,我们可以定义自己的函数来准确地实现想要的功能
- drop_last:告诉如何处理数据集长度除于batch_size余下的数据。True就抛弃,否则保留
一个测试的例子
import torch import torch.utils.data as Data import numpy as np test = np.array([0,1,2,3,4,5,6,7,8,9,10,11]) inputing = torch.tensor(np.array([test[i:i + 3] for i in range(10)])) target = torch.tensor(np.array([test[i:i + 1] for i in range(10)])) torch_dataset = Data.TensorDataset(inputing,target) batch = 3 loader = Data.DataLoader( dataset=torch_dataset, batch_size=batch, # 批大小 # 若dataset中的样本数不能被batch_size整除的话,最后剩余多少就使用多少 collate_fn=lambda x:( torch.cat( [x[i][j].unsqueeze(0) for i in range(len(x))], 0 ).unsqueeze(0) for j in range(len(x[0])) ) ) for (i,j) in loader: print(i) print(j)
输出结果:
tensor([[[ 0, 1, 2], [ 1, 2, 3], [ 2, 3, 4]]], dtype=torch.int32) tensor([[[ 0], [ 1], [ 2]]], dtype=torch.int32) tensor([[[ 3, 4, 5], [ 4, 5, 6], [ 5, 6, 7]]], dtype=torch.int32) tensor([[[ 3], [ 4], [ 5]]], dtype=torch.int32) tensor([[[ 6, 7, 8], [ 7, 8, 9], [ 8, 9, 10]]], dtype=torch.int32) tensor([[[ 6], [ 7], [ 8]]], dtype=torch.int32) tensor([[[ 9, 10, 11]]], dtype=torch.int32) tensor([[[ 9]]], dtype=torch.int32)
如果不要collate_fn的值,输出变成
tensor([[ 0, 1, 2], [ 1, 2, 3], [ 2, 3, 4]], dtype=torch.int32) tensor([[ 0], [ 1], [ 2]], dtype=torch.int32) tensor([[ 3, 4, 5], [ 4, 5, 6], [ 5, 6, 7]], dtype=torch.int32) tensor([[ 3], [ 4], [ 5]], dtype=torch.int32) tensor([[ 6, 7, 8], [ 7, 8, 9], [ 8, 9, 10]], dtype=torch.int32) tensor([[ 6], [ 7], [ 8]], dtype=torch.int32) tensor([[ 9, 10, 11]], dtype=torch.int32) tensor([[ 9]], dtype=torch.int32)
所以collate_fn就是使结果多一维。
看看collate_fn的值是什么意思。我们把它改为如下
collate_fn=lambda x:x
并输出
for i in loader: print(i)
得到结果
[(tensor([ 0, 1, 2], dtype=torch.int32), tensor([ 0], dtype=torch.int32)), (tensor([ 1, 2, 3], dtype=torch.int32), tensor([ 1], dtype=torch.int32)), (tensor([ 2, 3, 4], dtype=torch.int32), tensor([ 2], dtype=torch.int32))] [(tensor([ 3, 4, 5], dtype=torch.int32), tensor([ 3], dtype=torch.int32)), (tensor([ 4, 5, 6], dtype=torch.int32), tensor([ 4], dtype=torch.int32)), (tensor([ 5, 6, 7], dtype=torch.int32), tensor([ 5], dtype=torch.int32))] [(tensor([ 6, 7, 8], dtype=torch.int32), tensor([ 6], dtype=torch.int32)), (tensor([ 7, 8, 9], dtype=torch.int32), tensor([ 7], dtype=torch.int32)), (tensor([ 8, 9, 10], dtype=torch.int32), tensor([ 8], dtype=torch.int32))] [(tensor([ 9, 10, 11], dtype=torch.int32), tensor([ 9], dtype=torch.int32))]
每个i都是一个列表,每个列表包含batch_size个元组,每个元组包含TensorDataset的单独数据。所以要将重新组合成每个batch包含1*3*3的input和1*3*1的target,就要重新解包并打包。 看看我们的collate_fn:
collate_fn=lambda x:( torch.cat( [x[i][j].unsqueeze(0) for i in range(len(x))], 0 ).unsqueeze(0) for j in range(len(x[0])) )
j取的是两个变量:input和target。i取的是batch_size。然后通过unsqueeze(0)方法在前面加一维。torch.cat(,0)将其打包起来。然后再通过unsqueeze(0)方法在前面加一维。 完成。
以上这篇Pytorch技巧:DataLoader的collate_fn参数使用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 明达年度发烧碟MasterSuperiorAudiophile2021[DSF]
- 英文DJ 《致命的温柔》24K德国HD金碟DTS 2CD[WAV+分轨][1.7G]
- 张学友1997《不老的传说》宝丽金首版 [WAV+CUE][971M]
- 张韶涵2024 《不负韶华》开盘母带[低速原抓WAV+CUE][1.1G]
- lol全球总决赛lcs三号种子是谁 S14全球总决赛lcs三号种子队伍介绍
- lol全球总决赛lck三号种子是谁 S14全球总决赛lck三号种子队伍
- 群星.2005-三里屯音乐之男孩女孩的情人节【太合麦田】【WAV+CUE】
- 崔健.2005-给你一点颜色【东西音乐】【WAV+CUE】
- 南台湾小姑娘.1998-心爱,等一下【大旗】【WAV+CUE】
- 【新世纪】群星-美丽人生(CestLaVie)(6CD)[WAV+CUE]
- ProteanQuartet-Tempusomniavincit(2024)[24-WAV]
- SirEdwardElgarconductsElgar[FLAC+CUE]
- 田震《20世纪中华歌坛名人百集珍藏版》[WAV+CUE][1G]
- BEYOND《大地》24K金蝶限量编号[低速原抓WAV+CUE][986M]
- 陈奕迅《准备中 SACD》[日本限量版] [WAV+CUE][1.2G]