我对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框架使用入门指引
Apr 15 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
实例探究Python以并发方式编写高性能端口扫描器的方法
Jun 14 Python
Python增量循环删除MySQL表数据的方法
Sep 23 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
Python实现的多进程拷贝文件并显示百分比功能示例
Apr 09 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
python实现的自动发送消息功能详解
Aug 15 Python
Python socket服务常用操作代码实例
Jun 22 Python
Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法
Jul 21 Python
python中字典增加和删除使用方法
Sep 30 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 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
丧钟首部独立剧集《丧钟:骑士与龙》北美正式开播,场面血腥
2020/04/09 欧美动漫
提升PHP执行速度全攻略(下)
2006/10/09 PHP
PHP类与对象中的private访问控制的疑问
2012/11/01 PHP
PHP中header和session_start前不能有输出原因分析
2013/01/11 PHP
你可能不知道PHP get_meta_tags()函数
2014/05/12 PHP
PHP生成各种常见验证码和Ajax验证过程
2016/01/10 PHP
php微信开发之批量生成带参数的二维码
2016/06/26 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
仿服务器端脚本方式的JS模板实现方法
2007/04/27 Javascript
超简单JS二级、多级联动的简单实例
2014/02/18 Javascript
ie8模式下click无反应点击option无反应的解决方法
2014/10/11 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
微信小程序加载更多 点击查看更多
2016/11/29 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
微信小程序实现图片轮播及文件上传
2017/04/07 Javascript
微信小程序多张图片上传功能
2017/06/07 Javascript
在React项目中使用Eslint代码检查工具及常见问题
2018/10/10 Javascript
小程序实现层叠卡片滑动效果
2019/08/26 Javascript
[50:59]2018DOTA2亚洲邀请赛 4.7 总决赛 LGD vs Mineski第四场
2018/04/10 DOTA
一个小示例告诉你Python语言的优雅之处
2014/07/04 Python
Python探索之自定义实现线程池
2017/10/27 Python
浅谈python3.6的tkinter运行问题
2019/02/22 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
html5 乒乓球(碰撞检测)实例二
2013/07/25 HTML / CSS
学习雷锋演讲稿
2014/05/10 职场文书
个人承诺书怎么写
2014/05/24 职场文书
人事主管岗位职责说明书
2014/07/30 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
员工聘用合同范本
2015/09/21 职场文书
终止合同协议书范本
2016/03/22 职场文书
Spring Cache和EhCache实现缓存管理方式
2021/06/15 Java/Android
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers