广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Pytorch使用shuffle打乱数据的操作
  • 663
分享到

Pytorch使用shuffle打乱数据的操作

2024-04-02 19:04:59 663人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

这个东西算是我被这个shuffle坑了的一个总结吧! 首先我得告诉你一件事,那就是PyTorch中的tensor,如果直接使用random.shuffle打乱数据,或者使用下面的方式

这个东西算是我被这个shuffle坑了的一个总结吧!

首先我得告诉你一件事,那就是PyTorch中的tensor,如果直接使用random.shuffle打乱数据,或者使用下面的方式,自己定义直接写。


 def Shuffle(self, x, y,random=None, int=int):
         if random is None:
            random = self.random
                 for i in range(len(x)):
            j = int(random() * (i + 1))
            if j<=len(x)-1:
                x[i],x[j]=x[j],x[i]
                y[i],y[j]=y[j],y[i]
          retrun x,y

那你就会收获一堆的混乱数据,因为使用这种交换的方式对tensor类型的数据进行操作,会导致里面的数据出现重复复制的问题。

比如我y中的数据为【0,1,0,1,0,1】

在经过几次shuffle,其中的数据就变成了【1,1,1,1,1,1】。

数据顿时出现混乱。

正确的方式是先转成numpy,再进行交换数据

比如:


 def Shuffle(self, x, y,random=None, int=int):
        """x, random=random.random -> shuffle list x in place; return None.
        Optional arg random is a 0-argument function returning a random
        float in [0.0, 1.0); by default, the standard random.random.
        """
        if random is None:
            random = self.random #random=random.random
        #转成numpy
        if torch.is_tensor(x)==True:
            if self.use_cuda==True:
               x=x.cpu().numpy()
            else:
               x=x.numpy()
        if torch.is_tensor(y) == True:
            if self.use_cuda==True:
               y=y.cpu().numpy()
            else:
               y=y.numpy()
        #开始随机置换
        for i in range(len(x)):
            j = int(random() * (i + 1))
            if j<=len(x)-1:#交换
                x[i],x[j]=x[j],x[i]
                y[i],y[j]=y[j],y[i]
        #转回tensor
        if self.use_cuda == True:
            x=torch.from_numpy(x).cuda()
            y=torch.from_numpy(y).cuda()
        else:
            x = torch.from_numpy(x)
            y = torch.from_numpy(y)
        return x,y

补充:python对训练数据集shuffle(打乱)的一些方式

1.通过数组来shuffle


image_list=[]           # list of images
label_list=[]           # list of labels
 
temp = np.array([image_list, label_list])
temp = temp.transpose()
np.random.shuffle(temp)
 
images = temp[:, 0]     # array of images   (N,)
labels = temp[:, 1]

2.通过索引 Index 来 shuffle


image_list=[]           # list of images
label_list=[]           # list of labels
 
##如果image_list存的是读取的特征数据,而不是图片路径,不要注释后面两句(list无法索引内部list)
#[list indices must be integers or slices, not list]
#image_list = np.array(image_list)
#label_list = np.array(label_list)
 
index = [i for i in range(len(image_list))]
np.random.shuffle(index)
images = image_list[index]
labels = label_list[index]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Pytorch使用shuffle打乱数据的操作

本文链接: https://www.lsjlt.com/news/126450.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pytorch使用shuffle打乱数据的操作
    这个东西算是我被这个shuffle坑了的一个总结吧! 首先我得告诉你一件事,那就是pytorch中的tensor,如果直接使用random.shuffle打乱数据,或者使用下面的方式...
    99+
    2022-11-12
  • Pytorch如何使用shuffle打乱数据的操作
    这篇文章主要介绍Pytorch如何使用shuffle打乱数据的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!首先我得告诉你一件事,那就是pytorch中的tensor,如果直接使用random.shuffle打乱...
    99+
    2023-06-15
  • python如何使用shuffle函数将一个列表中的元素打乱
    小编给大家分享一下python如何使用shuffle函数将一个列表中的元素打乱,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!shuffle([x,random])...
    99+
    2023-06-03
  • 使用pytorch加载并读取COCO数据集的详细操作
    目录环境配置基础知识:元祖、字典、数组利用PyTorch读取COCO数据集利用PyTorch读取自己制作的数据集如何使用pytorch加载并读取COCO数据集 环境配置基础知识:元祖...
    99+
    2022-11-11
  • pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
    F.avg_pool1d()数据是三维输入 input维度: (batch_size,channels,width)channel可以看成高度 kenerl维度:(一维:表示widt...
    99+
    2022-11-12
  • 使用Pytorch训练two-head网络的操作
    之前有写过一篇如何使用Pytorch实现two-head(多输出)模型 在那篇文章里,基本把two-head网络以及构建讲清楚了(如果不清楚请先移步至那一篇博文)。 但是我后来发现之...
    99+
    2022-11-12
  • pytorch 使用半精度模型部署的操作
    背景 pytorch作为深度学习的计算框架正得到越来越多的应用. 我们除了在模型训练阶段应用外,最近也把pytorch应用在了部署上. 在部署时,为了减少计算量,可以考虑使用16位浮...
    99+
    2022-11-12
  • pytorch教程之Tensor的值及操作使用学习
    目录1、Tensors建立5*3的矩阵,未初始化建立随机初始化矩阵建立零初始化矩阵,数据类型是Long建立一个tensor数据来源于data获取tensor的size2、对Tenso...
    99+
    2022-11-12
  • 数据库操作之PreparedStatement的使用
    PreparedStatement的使用 1.1 PreparedStatement介绍 可以通过调用 Connection 对象的 preparedStatement(String sql) 方法获取 PreparedStateme...
    99+
    2014-11-23
    数据库操作之PreparedStatement的使用
  • 使用java怎么随机打乱数组的顺序
    本篇文章为大家展示了使用java怎么随机打乱数组的顺序,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编程语言的代表,实现了面向...
    99+
    2023-06-14
  • 使用Pytorch实现two-head(多输出)模型的操作
    如何使用Pytorch实现two-head(多输出)模型 1. two-head模型定义 先放一张我要实现的模型结构图: 如上图,就是一个two-head模型,也是一个但输入多输出...
    99+
    2022-11-12
  • MySQL数据操作-DML语句的使用
    说明 DML(Data Manipulation Language)数据操作语言,是指对数据库进行增删改的操作指令,主要有INSERT、UPDATE、DELETE三种,代表插入、更新与删除,这是学习MySQL...
    99+
    2022-05-14
    MySQL dml语句 mysql 数据操作
  • springboot使用RedisRepository操作数据的实现
    目录一、一个属性、一个属性的存取二、使用Jackson2HashMapper存取对象三、使用RedisRepository的对象操作通过集成spring-boot-starter-d...
    99+
    2022-11-13
  • 使用Python对MySQL数据操作
    本文介绍Python3使用PyMySQL连接数据库,并实现简单的增删改查。 什么是PyMySQL? PyMySQL是Python3.x版本中用于连接MySQL服务器的一个库,Python2.x中则使用mys...
    99+
    2022-06-04
    操作 数据 Python
  • 使用PHP操作Memcached数据库
    Memcached是一种高性能的分布式内存对象缓存系统,它可以帮助开发者通过缓存减轻服务器的负担,从而提高Web应用的运行效率。PHP是一种广泛使用的服务器端编程语言,它可以与Memcached进行交互,实现对缓存的读写操作。本文将介绍如何...
    99+
    2023-05-15
    PHP memcached 数据库操作
  • 使用PHP操作Redis数据库
    Redis是一款基于内存的高性能键值对数据库,可以被用于缓存、队列等多种场景。而PHP是一种开发语言,可以用于Web开发、后端服务等多种场景。如果我们能够将PHP和Redis结合使用,可以达到更优秀的性能和效果。本文将介绍如何使用PHP操作...
    99+
    2023-05-16
    PHP redis 数据库操作
  • 使用PHP操作Cassandra数据库
    Cassandra是一个基于NoSQL的分布式数据库管理系统,可以支持处理大量数据。PHP作为一种流行的服务器端编程语言,可以用于操作Cassandra数据库。本篇文章将介绍如何使用PHP驱动程序和CQL来连接和操作Cassandra数据库...
    99+
    2023-05-16
    PHP 数据库操作 Cassandra
  • 使用PHP操作Elasticsearch数据库
    随着大数据时代的到来,很多企业开始选择使用Elasticsearch数据库来存放和索引海量数据。而PHP是一个广泛使用的Web开发语言,因此,了解如何使用PHP操作Elasticsearch数据库将会大有裨益。安装Elasticsearch...
    99+
    2023-05-17
    PHP elasticsearch 数据库操作
  • 使用Golang的channel交叉打印两个数组的操作
    Go的channel提供了强大的同步功能,那么如何使用channel交叉打印两个数组呢? 灰常简单,只需设置两个channel变量 数组1打印完一个值就用channel通知数组2,同...
    99+
    2022-11-12
  • python数据库操作--数据库使用概述
    目录1. 数据库基础知识2. 访问数据库基本原理1.应用系统2.数据库驱动程序 3.数据库系统3. ODBC与ADO1.** ODBC**2.ADO4. 关系型数据库总结1. 数据库基础知识 数据库(DB...
    99+
    2022-06-02
    python 数据库使用
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作