我对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 相关文章推荐
50行代码实现贪吃蛇(具体思路及代码)
Apr 27 Python
python连接MySQL数据库实例分析
May 12 Python
Python批量查询域名是否被注册过
Jun 21 Python
关于Python 3中print函数的换行详解
Aug 08 Python
python抓取京东小米8手机配置信息
Nov 13 Python
Django REST Framework序列化外键获取外键的值方法
Jul 26 Python
Python爬虫:url中带字典列表参数的编码转换方法
Aug 21 Python
python设置代理和添加镜像源的方法
Feb 14 Python
python如何写个俄罗斯方块
Nov 06 Python
如何用python识别滑块验证码中的缺口
Apr 01 Python
python用海龟绘图写贪吃蛇游戏
Jun 18 Python
浅谈Python实现opencv之图片色素的数值运算和逻辑运算
Jun 23 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时间戳使用实例代码
2008/06/07 PHP
PHP 作用域解析运算符(::)
2010/07/27 PHP
PHP Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
Yii2组件之多图上传插件FileInput的详细使用教程
2016/06/20 PHP
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
javascript改变position值实现菜单滚动至顶部后固定
2013/01/18 Javascript
javascript中的onkeyup和onkeydown区别介绍
2013/04/28 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
一个jquery实现的不错的多行文字图片滚动效果
2014/09/28 Javascript
判断字符串的长度(优化版)中文占两个字符
2014/10/30 Javascript
jQuery使用contains过滤器实现精确匹配方法详解
2016/02/25 Javascript
JavaScript实现字符串与日期的互相转换及日期的格式化
2016/03/07 Javascript
微信JS接口大全
2016/08/25 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
input输入框内容实时监测(附代码)
2017/08/15 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
[17:13]DOTA2 HEROS教学视频教你分分钟做大人-斯拉克
2014/06/13 DOTA
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
Scrapy爬虫实例讲解_校花网
2017/10/23 Python
[原创]pip和pygal的安装实例教程
2017/12/07 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
Django框架视图函数设计示例
2019/07/29 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
2020/03/30 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
德国网上宠物店:Zoobio
2018/05/23 全球购物
小学新教师培训方案
2014/02/03 职场文书
办公室主任岗位职责
2015/01/31 职场文书
英语教师求职信范文
2015/03/20 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL
Redis官方可视化工具RedisInsight安装使用教程
2022/04/19 Redis