文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Pytorch如何使用shuffle打乱数据的操作

2023-06-15 04:37

关注

这篇文章主要介绍Pytorch如何使用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 imageslabel_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 imageslabel_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]

pytorch的优点

1.PyTorch是相当简洁且高效快速的框架;2.设计追求最少的封装;3.设计符合人类思维,它让用户尽可能地专注于实现自己的想法;4.与google的Tensorflow类似,FAIR的支持足以确保PyTorch获得持续的开发更新;5.PyTorch作者亲自维护的论坛 供用户交流和求教问题6.入门简单

以上是“Pytorch如何使用shuffle打乱数据的操作”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网行业资讯频道!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯