我对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的Django框架中使用通用视图的方法
Jul 21 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Python绘制七段数码管实例代码
Dec 20 Python
python3.5+tesseract+adb实现西瓜视频或头脑王者辅助答题
Jan 17 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
Apr 23 Python
python实现类之间的方法互相调用
Apr 29 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
Python实用库 PrettyTable 学习笔记
Aug 06 Python
在django模板中实现超链接配置
Aug 21 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
python如何进入交互模式
Jul 06 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
May 21 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
PHP 常见郁闷问题答解
2006/11/25 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
做好七件事帮你提升jQuery的性能
2014/02/06 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
js表单登陆验证示例
2016/10/19 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
原生js实现秒表计时器功能
2017/02/16 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
Vue.use源码学习小结
2018/06/20 Javascript
JS前端模块化原理与实现方法详解
2020/03/17 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
JS实现炫酷雪花飘落效果
2020/08/19 Javascript
[43:49]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
在Python中处理XML的教程
2015/04/29 Python
对python中UDP,socket的使用详解
2019/08/22 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
开启Django博客的RSS功能的实现方法
2020/02/17 Python
django项目中新增app的2种实现方法
2020/04/01 Python
会计专业毕业生自我评价
2013/09/25 职场文书
事业单位请假制度
2014/01/13 职场文书
企业宣传方案
2014/03/04 职场文书
体操比赛口号
2014/06/10 职场文书
大学生赌博检讨书
2014/09/22 职场文书
领导班子对照检查材料
2014/09/22 职场文书
试用期自我评价范文
2015/03/10 职场文书
2015年宣传思想工作总结
2015/05/22 职场文书
永远是春天观后感
2015/06/12 职场文书
私人贷款担保书该怎么写呢?
2019/07/02 职场文书
导游词之晋城蟒河
2019/12/12 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers