torch.utils.data.DataLoader,pytorch dataset dataloader
DataLoader是PyTorch中读取数据的重要接口,基本用于PyTorch的训练模型。下面这篇文章主要介绍一些PyTorch中torch.utils.data.DataLoader的简介和使用方法,有需要的可以参考一下。
00-1010一、torch.utils.data.DataLoader二、简介。示例参考链接摘要
目录
角色:torch.utils.data.DataLoader主要用于将数据分批次。
数据加载器,结合了数据集和采样器,可以提供多线程处理数据集。
该函数在训练模型时使用,用于将训练数据分成几组。这个函数一次抛出一组数据。直到所有的数据都被抛出。就是做一个数据初始化。
好处:
使用DataLoader的好处是可以快速迭代数据。
生成迭代数据非常方便。
注意:
此外,需要注意的是,输入到函数中的数据必须是迭代的。如果是自定义数据集,可以通过定义类中的def__len__和def__getitem__来定义。
一、torch.utils.data.DataLoader 简介
BATCH_SIZE 刚好整除数据量
批量训练,把数据变成小批量的数据进行训练。
DataLoader用来打包使用的数据,一次抛出一批数据。
进口火炬
将torch.utils.data作为数据导入
BATCH_SIZE=5 #批量训练的数据数量
X=torch.linspace(1,10,10) #定型数据
打印(x)
Y=torch.linspace(10,1,10) # label
打印(y)
#将数据放入数据库
torch _ dataset=data . tensordataset(x,y) #将给定的张量数据包装成一个数据集。
loader=数据。数据加载器(
#一次从数据库中提取批量样本
dataset=torch_dataset,# torch TensorDataset格式
批量大小=批量大小,#最小批量大小
Shuffle=True,#是否要对数据进行加扰(加扰效果更好)
Num_workers=2,#多线程读取数据
)
def show_batch():
对于范围(3):中的历元
对于枚举(加载程序):中的步骤(批处理x,批处理y)
#培训
打印( steop:{},batch_x:{},batch_y:{} 。格式(step,batch_x,batch_y))
显示批处理()
输出结果:
张量([ 1。 2. 3. 4. 5. 6. 7. 8. 9. 10.])
张量([10。 9. 8. 7. 6. 5. 4. 3. 2. 1.])
steop:0,batch_x:tensor([10。 1. 3. 7. 6.]),batch_y:tensor([ 1。 10. 8. 4. 5.])
steop:1,batch_x:tensor([8。 5. 4. 9. 2.]),batch_y:tensor([3。 6. 7. 2. 9.])
steop:0,batch_x:tensor([ 9。 3. 10. 1. 5.]),batch_y:tensor([ 2。 8. 1. 10.n
bsp;6.])
steop:1, batch_x:tensor([2., 6., 8., 4., 7.]), batch_y:tensor([9., 5., 3., 7., 4.])
steop:0, batch_x:tensor([ 2., 10., 9., 6., 1.]), batch_y:tensor([ 9., 1., 2., 5., 10.])
steop:1, batch_x:tensor([8., 3., 4., 7., 5.]), batch_y:tensor([3., 8., 7., 4., 6.])
说明:共有 10 条数据,设置 BATCH_SIZE 为 5 来进行划分,能划分为 2 组(steop 为 0 和 1)。这两组数据互斥。
BATCH_SIZE 不整除数据量:会输出余下所有数据
将上述代码中的 BATCH_SIZE 改为 4 :
"""批训练,把数据变成一小批一小批数据进行训练。
DataLoader就是用来包装所使用的数据,每次抛出一批数据
"""
import torch
import torch.utils.data as Data
BATCH_SIZE = 4 # 批训练的数据个数
x = torch.linspace(1, 10, 10) # 训练数据
print(x)
y = torch.linspace(10, 1, 10) # 标签
print(y)
# 把数据放在数据库中
torch_dataset = Data.TensorDataset(x, y) # 对给定的 tensor 数据,将他们包装成 dataset
loader = Data.DataLoader(
# 从数据库中每次抽出batch size个样本
dataset=torch_dataset, # torch TensorDataset format
batch_size=BATCH_SIZE, # mini batch size
shuffle=True, # 要不要打乱数据 (打乱比较好)
num_workers=2, # 多线程来读数据
)
def show_batch():
for epoch in range(3):
for step, (batch_x, batch_y) in enumerate(loader):
# training
print("steop:{}, batch_x:{}, batch_y:{}".format(step, batch_x, batch_y))
show_batch()
输出结果:
tensor([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10.])
tensor([10., 9., 8., 7., 6., 5., 4., 3., 2., 1.])
steop:0, batch_x:tensor([1., 5., 3., 2.]), batch_y:tensor([10., 6., 8., 9.])
steop:1, batch_x:tensor([7., 8., 4., 6.]), batch_y:tensor([4., 3., 7., 5.])
steop:2, batch_x:tensor([10., 9.]), batch_y:tensor([1., 2.])
steop:0, batch_x:tensor([ 7., 10., 5., 2.]), batch_y:tensor([4., 1., 6., 9.])
steop:1, batch_x:tensor([9., 1., 6., 4.]), batch_y:tensor([ 2., 10., 5., 7.])
steop:2, batch_x:tensor([8., 3.]), batch_y:tensor([3., 8.])
steop:0, batch_x:tensor([10., 3., 2., 8.]), batch_y:tensor([1., 8., 9., 3.])
steop:1, batch_x:tensor([1., 7., 5., 9.]), batch_y:tensor([10., 4., 6., 2.])
steop:2, batch_x:tensor([4., 6.]), batch_y:tensor([7., 5.])
说明:共有 10 条数据,设置 BATCH_SIZE 为 4 来进行划分,能划分为 3 组(steop 为 0 、1、2)。分别有 4、4、2 条数据。
参考链接
- torch.utils.data.DataLoader使用方法
- 【Pytorch基础】torch.utils.data.DataLoader方法的使用
总结
到此这篇关于PyTorch中torch.utils.data.DataLoader简单介绍与使用方法的文章就介绍到这了,更多相关PyTorch中torch.utils.data.DataLoader内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。