首页 > 其他分享 >Pytorch - Dataloader

Pytorch - Dataloader

时间:2024-04-01 20:11:07浏览次数:22  
标签:__ tensor Dataloader shape batch Pytorch input label

Basically the DataLoader works with the Dataset object. So to use the DataLoader you need to get your data into this Dataset wrapper. To do this you only need to implement two magic methods: __getitem__ and __len__. The __getitem__ takes an index and returns a tuple of (x, y) pair. The __len__ is just your usual length that returns the size of the data. And that’s that. [1]

Dataloader如何读取数据

import torch

# Define some sample data
X = torch.randn(5,3)  # input
y = torch.randn(5,3)  # labe

print(X,y)

我们的数据如下:

tensor([[-0.5138, -1.7766, -0.6183],
        [ 0.2235,  0.1974,  0.2892],
        [ 1.6249, -0.5768, -1.5081],
        [ 0.5972, -0.1788,  0.7579],
        [ 1.3844, -0.5480, -1.5612]]) 
tensor([[-0.5818,  0.1668,  0.5073],
        [-1.7707, -0.2907,  1.4918],
        [ 1.2157, -2.8250, -0.0247],
        [ 0.2748,  0.1086,  1.6052],
        [-0.7613, -1.3326, -0.5267]])

然后我们从dataloader读取。

# batch_size = 1, 这意味着只能一次只能读取一个数据
# shuffle = True, 在每个训练周期(epoch)开始时,数据集中的数据将被随机打乱
dataloader = DataLoader(dataset, batch_size=1, shuffle=False)

for i, (batch_x, batch_y) in enumerate(dataloader):
    print(f"Batch {i}: input shape {batch_x}, \n label shape {batch_y}")

我们可以得到:

Batch 0: input shape tensor([[-0.5138, -1.7766, -0.6183]]), label shape tensor([[-0.5818,  0.1668,  0.5073]])
Batch 1: input shape tensor([[ 0.5972, -0.1788,  0.7579]]), label shape tensor([[0.2748, 0.1086, 1.6052]])
Batch 2: input shape tensor([[ 1.6249, -0.5768, -1.5081]]), label shape tensor([[ 1.2157, -2.8250, -0.0247]])
Batch 3: input shape tensor([[ 1.3844, -0.5480, -1.5612]]), label shape tensor([[-0.7613, -1.3326, -0.5267]])
Batch 4: input shape tensor([[0.2235, 0.1974, 0.2892]]), label shape tensor([[-1.7707, -0.2907,  1.4918]])

从batch size拿出来的输入的顺序和放进去的顺序是一样的吗?
answer: 所以这个问题被回答了,如果shuffle = true, 那就不是,因为数据会被随机打乱。否则就是相同的顺序。

标签:__,tensor,Dataloader,shape,batch,Pytorch,input,label
From: https://www.cnblogs.com/hackerk/p/18109127

相关文章

  • 【PyTorch 实战2:UNet 分类模型】10min揭秘 UNet 分割网络如何工作以及pytorch代码实现
    UNet网络详解及PyTorch实现一、UNet网络原理  U-Net,自2015年诞生以来,便以其卓越的性能在生物医学图像分割领域崭露头角。作为FCN的一种变体,U-Net凭借其Encoder-Decoder的精巧结构,不仅在医学图像分析中大放异彩,更在卫星图像分割、工业瑕疵检测等多个领域展现出强大的应用......
  • 使用镜像安装cuda12.1版本pytorch
    1.添加通道condaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/condaconfig--addchannelscondaconfig--addchannelshttps://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/condaconfig--addchannelshttps://mirrors.bfs......
  • 故障诊断模型 | 基于LSTM长短期记忆神经网络的滚动轴承故障诊断(Pytorch)
    概述LSTM(LongShort-TermMemory)是一种常用的循环神经网络(RNN),在时间序列数据处理任务中表现优秀,可用于滚动轴承故障诊断。滚动轴承故障通常会导致振动信号的变化,这些振动信号可以被视为时间序列数据。LSTM能够捕捉时间序列之间的依赖关系,从而对滚动轴承的故障进行诊断。......
  • CUDA与Pytorch安装
    cuda和pytorch是使用python进行深度学习常会需要的工具,其中pytorch是深度学习的框架之一,cuda是利用GPU进行运算的工具。cuda的安装cuda是英伟达公司开发的利用显卡进行深度学习的工具。显卡的GPU比CPU的运算能力要强,在深度学习时算力十分重要,直接决定了我们训练模型的速度,所以......
  • 深度学习pytorch——经典卷积网络之ResNet(持续更新)
    错误率前五的神经网络(图-1):图-1可以很直观的看到,随着层数的增加Error也在逐渐降低,因此深度是非常重要的,但是学习更好的网络模型和堆叠层数一样简单吗?通过实现表明(图-2),并不是如此,会出现梯度消失和梯度爆炸的现象,甚至比堆叠之前的训练效果更差,这种现象被称为梯度......
  • 深度学习pytorch——nn.Module(持续更新)
    作为一个初学者,发现构建一个简单的线性模型都能看到nn.Module的身影,初学者疑惑了,nn.Module到底是干什么的,如此形影不离,了解之后,很牛。1、nn.Module是所有层的父类,比如Linear、BatchNorm2d、Conv2d、ReLU、Sigmoid、ConvTranposed、Dropout等等这些都是它的儿子(子类),你可以直接......
  • 一行一行讲解深度学习代码(零)如何利用pytorch搭建一个完整的深度学习项目——深度学习
    本文适合没有基础的pytorch深度学习小白和python基础不太好的同学!!建议有基础的同学不要看~文章目录深度学习项目的大致结构(一)数据集加载1.功能2.工具(1)datasets(2)DataLoader(二)数据预处理1.功能2.工具(1)torchvision.transforms(2)Compose()3.实战(1)定义数据集(2)数据预处理......
  • pytorch的基础函数
    [torch.arange]是PyTorch中的一个函数,用于生成一个一维的张量(tensor),其中包含从起始值(包括)到结束值(不包括)的等差数列。这个函数非常类似于Python的内置range函数,但是生成的是PyTorch张量而不是Python列表。torch.arange(start=0,end,step=1,*,out=None,dtype=No......
  • Ubuntu22.04下Issac Gym/宇树机器人RL&gcc/g++,CUDA,CUDA ToolKit,Pytorch配置环境配
    前置条件本随笔写作Condition:在本人3050Ti笔记本上配好环境后,再在室友4060笔记本上边配边记录整理所得。室友的系统已经配好了相应驱动,因此,本随笔内容基于已经安装了NVIDIA显卡驱动的系统。下次搞到没装驱动的系统我再补一个随笔。宇树机器人宇树科技的文档中心有一个简单的安......
  • pytorch中的张量函数
    troch.cat()&torch.stack().cat和.stack的区别在于cat会增加现有维度的值,可以理解为续接,stack会新加增加一个维度,可以理解为叠加x1=torch.tensor([[11,21,31],[21,31,41]],dtype=torch.int)x2=torch.tensor([[12,22,32],[22,32,42]])inputs=[x1,x2]R0......