本文归纳自:

https://www.scottcondron.com/jupyter/visualisation/audio/2020/12/02/dataloaders-samplers-collate.html#SequentialSampler

基础代码

from torch.utils.data import DataLoader
#构造数据
xs = list(range(11))
ys = list(range(10,21))
print('xs values: ', xs)
print('ys values: ', ys)
#定义Dataset子类
class MyDataset:def __init__(self, xs, ys):self.xs = xsself.ys = ysdef __getitem__(self, i):return self.xs[i], self.ys[i]def __len__(self):return len(self.xs)
#实例化一个Dataset
dataset = MyDataset(xs, ys)
dataset[2] # returns the tuple (x[2], y[2])

自定义 Sampler

每个自定义的Sampler子类需要一个 __iter__ 方法, 以保证遍历到dataset的每一个元素,

还需要一个 __len__ 方法 ,来获取数据集的大小.

#collapse-hide
import random
from torch.utils.data.sampler import Samplerclass IndependentHalvesSampler(Sampler):def __init__(self, dataset):halfway_point = int(len(dataset)/2)self.first_half_indices = list(range(halfway_point))self.second_half_indices = list(range(halfway_point, len(dataset)))def __iter__(self):random.shuffle(self.first_half_indices)random.shuffle(self.second_half_indices)return iter(self.first_half_indices + self.second_half_indices)def __len__(self):return len(self.first_half_indices) + len(self.second_half_indices)our_sampler = IndependentHalvesSampler(dataset)
print('First half indices: ', our_sampler.first_half_indices)
print('Second half indices:', our_sampler.second_half_indices)dl = DataLoader(dataset, sampler=our_sampler, batch_size=1)for i, data in enumerate(dl):print(data)[tensor([1]), tensor([11])]
[tensor([4]), tensor([14])]
[tensor([3]), tensor([13])]
[tensor([0]), tensor([10])]
[tensor([2]), tensor([12])]
[tensor([7]), tensor([17])]
[tensor([8]), tensor([18])]
[tensor([9]), tensor([19])]
[tensor([5]), tensor([15])]
[tensor([6]), tensor([16])]
[tensor([10]), tensor([20])]

pytorch DataLoader 自定义 sampler相关推荐

  1. dataset__getitem___一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...

  2. 【小白学习PyTorch教程】五、在 PyTorch 中使用 Datasets 和 DataLoader 自定义数据

    「@Author:Runsen」 有时候,在处理大数据集时,一次将整个数据加载到内存中变得非常难. 因此,唯一的方法是将数据分批加载到内存中进行处理,这需要编写额外的代码来执行此操作.对此,PyTor ...

  3. 查看dataloader的大小_一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    以下内容都是针对Pytorch 1.0-1.1介绍. 很多文章都是从Dataset等对象自下往上进行介绍,但是对于初学者而言,其实这并不好理解,因为有的时候会不自觉地陷入到一些细枝末节中去,而不能把握 ...

  4. 一文弄懂Pytorch的DataLoader, DataSet, Sampler之间的关系

    自上而下理解三者关系 首先我们看一下DataLoader.__next__的源代码长什么样,为方便理解我只选取了num_works为0的情况(num_works简单理解就是能够并行化地读取数据). c ...

  5. PyTorch手把手自定义Dataloader读取数据

    PyTorch手把手自定义Dataloader读取数据 https://zhuanlan.zhihu.com/p/35698470 pytorch之dataloader深入剖析 https://www ...

  6. pytorch构建自定义dataset及一些经验

    目录 1.前言 2. 构建 datasets 3.Dataloader的使用 4. 后记   1.前言 此篇文章是作者在搭建数据集碰壁,改错过程中,不断疯狂地CSDN.博客园.torch官网总结出来的 ...

  7. 在pytorch中自定义dataset读取数据2021-1-8学习笔记

    在pytorch中自定义dataset读取数据 utils import os import json import pickle import randomimport matplotlib.pyp ...

  8. [PyTorch]——DataLoader Num_workers

    前段时间,我在调整yolo系列代码的时候,运行代码后,会提示 win页面太小问题,这种问题的解决办法之一就是通过调整 DataLoader的num_workers值的大小来解决,为了进一步了解num_ ...

  9. PyTorch基础-自定义数据集和数据加载器(2)

    处理数据样本的代码可能会变得混乱且难以维护: 理想情况下,我们想要数据集代码与模型训练代码解耦,以获得更好的可读性和模块化.PyTorch 域库提供了许多预加载的数据(例如 FashionMNIST) ...

  10. DeepChem | PyTorch中用自定义层实现DeepChem的GraphConvLayer

    PyTorch中用自定义层实现DeepChem的GraphConvLayer 环境 DeepChem 2.4 PyTorch 1.7.0 Python3.7.9 PyTorch中用自定义层实现Deep ...

最新文章

  1. 重磅直播|多模态融合SLAM技术分享!
  2. 关于jQuery的$.getJSON乱码问题
  3. 每日程序C语言42-带头结点的尾插法创建链表
  4. flask post json_【python:flask-SocketIO】网络通信框架简单了解
  5. mpvue微信小程序动画_入门微信小程序
  6. Python 日期 的 加减 等 操作
  7. java 基本语法都懂 ee_Java EE(一) 基础语法
  8. 4. 哪些视图中的数据不可以增删改操作?_MySQL之视图
  9. java拼装树_java 数据拼装成树结构
  10. System.ComponentModel.Win32Exception (0x80004005):拒绝访问。——解决办法
  11. Tornado引入静态css、js文件
  12. angularjs 资源集合
  13. php的jquery ajax请求,jquery ajax请求
  14. 智能水表营收管理系统
  15. 升级Win11后不喜欢怎么退回Win10系统?
  16. 硬核,创业公司就应该技术选型 Spring Cloud Alibaba, 开箱即用
  17. 分享个自己Python爬虫时的浏览器标识库
  18. 3个月测试员自述:4个影响我职业生涯的重要技能
  19. 测试用例的设计-提高测试覆盖率
  20. 售后服务场景智能调度解决方案

热门文章

  1. android应用调试之如何保存logcat日志到本地
  2. BZOJ2752[HAOI2012] 高速公路(road)
  3. BZOJ1070[SCOI2007] 修车
  4. css的calc函数
  5. 前端性能优化(慕课网笔记)-3-代码优化
  6. js基础-18-js中创建对象的几种方式
  7. map和foreach的区别和应用场景_面试官:说说UDP和TCP的区别及应用场景
  8. springboot 接入京东sdk_【第3期】Springboot:微信公众号分享quot;朋友圈quot;
  9. artcam 9.0英文版本下载_魔兽9.0暗影国度测试服前瞻 可能存在的仙狐坐骑详解
  10. Water Tree CodeForces 343D 树链剖分+线段树