我对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中的文本处理
Apr 11 Python
web.py 十分钟创建简易博客实现代码
Apr 22 Python
python requests 使用快速入门
Aug 31 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
Mar 13 Python
Python3导入自定义模块的三种方法详解
Apr 13 Python
Python进阶之自定义对象实现切片功能
Jan 07 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
Django mysqlclient安装和使用详解
Sep 17 Python
Python文件操作及内置函数flush原理解析
Oct 13 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 is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
显示youtube视频缩略图和Vimeo视频缩略图代码分享
2014/02/13 PHP
详解php实现页面静态化原理
2017/06/21 PHP
PHP递归算法的简单实例
2019/02/28 PHP
Display SQL Server Version Information
2007/06/21 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
checkbox设置复选框的只读效果不让用户勾选
2013/08/12 Javascript
js日期对象兼容性的处理方法
2014/01/28 Javascript
jquery1.10给新增元素绑定事件的方法
2014/03/06 Javascript
Jquery实现仿腾讯微博发表广播
2014/11/17 Javascript
浅谈setTimeout 与 setInterval
2015/06/23 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
jQuery实现元素的插入
2017/02/27 Javascript
nodeJS微信分享
2017/12/20 NodeJs
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
Python实现遍历数据库并获取key的值
2015/05/17 Python
Python入门_条件控制(详解)
2017/05/16 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
利用python循环创建多个文件的方法
2018/10/25 Python
对Python中小整数对象池和大整数对象池的使用详解
2019/07/09 Python
python实现两个文件夹的同步
2019/08/29 Python
解决python-docx打包之后找不到default.docx的问题
2020/02/13 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
关于逃课的检讨书
2014/01/23 职场文书
报关专员求职信范文
2014/02/22 职场文书
工程安全生产协议书
2014/11/21 职场文书
《日月潭》教学反思
2016/02/20 职场文书
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers