我对PyTorch dataloader里的shuffle=True的理解


Posted in Python onMay 20, 2021

对shuffle=True的理解:

之前不了解shuffle的实际效果,假设有数据a,b,c,d,不知道batch_size=2后打乱,具体是如下哪一种情况:

1.先按顺序取batch,对batch内打乱,即先取a,b,a,b进行打乱;

2.先打乱,再取batch。

证明是第二种

shuffle (bool, optional): set to ``True`` to have the data reshuffled 
at every epoch (default: ``False``).
if shuffle:
    sampler = RandomSampler(dataset) #此时得到的是索引

补充:简单测试一下pytorch dataloader里的shuffle=True是如何工作的

看代码吧~

import sys
import torch
import random
import argparse
import numpy as np
import pandas as pd
import torch.nn as nn
from torch.nn import functional as F
from torch.optim import lr_scheduler
from torchvision import datasets, transforms
from torch.utils.data import TensorDataset, DataLoader, Dataset
 
class DealDataset(Dataset):
    def __init__(self):
        xy = np.loadtxt(open('./iris.csv','rb'), delimiter=',', dtype=np.float32)
        #data = pd.read_csv("iris.csv",header=None)
        #xy = data.values
        self.x_data = torch.from_numpy(xy[:, 0:-1])
        self.y_data = torch.from_numpy(xy[:, [-1]])
        self.len = xy.shape[0]
    
    def __getitem__(self, index):
        return self.x_data[index], self.y_data[index]
 
    def __len__(self):
        return self.len
   
dealDataset = DealDataset() 
train_loader2 = DataLoader(dataset=dealDataset,
                          batch_size=2,
                          shuffle=True)
#print(dealDataset.x_data)
for i, data in enumerate(train_loader2):
    inputs, labels = data
 
    #inputs, labels = Variable(inputs), Variable(labels)
    print(inputs)
    #print("epoch:", epoch, "的第" , i, "个inputs", inputs.data.size(), "labels", labels.data.size())

简易数据集

我对PyTorch dataloader里的shuffle=True的理解我对PyTorch dataloader里的shuffle=True的理解

shuffle之后的结果,每次都是随机打乱,然后分成大小为n的若干个mini-batch.

我对PyTorch dataloader里的shuffle=True的理解

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 字符串操作实现代码(截取/替换/查找/分割)
Jun 08 Python
Python实现抓取页面上链接的简单爬虫分享
Jan 21 Python
python回调函数用法实例分析
May 09 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
Python使用django框架实现多人在线匿名聊天的小程序
Nov 29 Python
python修改txt文件中的某一项方法
Dec 29 Python
理想高通滤波实现Python opencv示例
Jan 30 Python
在Python中表示一个对象的方法
Jun 25 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
python中pip的使用和修改下载源的方法
Jul 08 Python
python 字符串常用函数详解
Sep 11 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
Python快速优雅的批量修改Word文档样式
Django migrate报错的解决方案
Django使用channels + websocket打造在线聊天室
教你怎么用python爬取爱奇艺热门电影
Pytorch使用shuffle打乱数据的操作
May 20 #Python
教你利用Selenium+python自动化来解决pip使用异常
python 提取html文本的方法
May 20 #Python
You might like
分享一个Laravel好用的Cache宏
2015/03/02 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
thinkPHP5框架分页样式类完整示例
2018/09/01 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
ExtJS 2.0实用简明教程 之ExtJS版的Hello
2009/04/29 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
vue.js入门教程之绑定class和style样式
2016/09/02 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
2018/01/25 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【圆形情况】
2018/12/13 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
在vue中使用jsonp进行跨域请求接口操作
2020/10/29 Javascript
jQuery列表动态增加和删除的实现方法
2020/11/05 jQuery
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
在Python中使用成员运算符的示例
2015/05/13 Python
Python中字符串对齐方法介绍
2015/05/21 Python
Python的包管理器pip更换软件源的方法详解
2016/06/20 Python
Python中turtle作图示例
2017/11/15 Python
使用 Python 实现微信公众号粉丝迁移流程
2018/01/03 Python
Python多层装饰器用法实例分析
2018/02/09 Python
python线程join方法原理解析
2020/02/11 Python
Python的赋值、深拷贝与浅拷贝的区别详解
2020/02/12 Python
Python基于requests库爬取网站信息
2020/03/02 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
无谷物狗粮:Pooch & Mutt
2018/05/23 全球购物
PatPat阿根廷:妈妈们的购物平台
2019/05/30 全球购物
什么是索引指示器
2012/08/20 面试题
幼儿园长自我鉴定
2013/10/17 职场文书
护理专业的自荐信
2013/10/22 职场文书
部门优秀员工推荐信
2015/03/24 职场文书
质量承诺书格式范文
2015/04/28 职场文书
表扬信格式模板
2015/05/05 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP