python numpy 三行代码打乱训练数据
今天发现一个用 numpy
随机化数组的技巧。
需求
我有两个数组( ndarray ):train_datasets 和 train_labels。其中,train_datasets 的每一行和 train_labels 是一一对应的。现在我要将数组打乱并用于训练,打乱后要求两者的行与行之间必须保持原来的对应关系。
实现
一般的实现思路,应该是先将 train_datasets(或 train_labels )打乱,并记录被打乱的行号,再通过行号调整 train_labels (或 train_datasets )的行次序,这样两者的对应关系能保持一致。但代码实现起来会很繁琐,而如果用上 numpy
的话,可以三行代码搞定。
首先,假设我们用如下训练数据(训练数据和标签都是三个):
>>> train_data = np.ndarray(shape=(3,1,2), dtype=np.int32, buffer=np.asarray((1,2,3,4,5,6), dtype=np.int32))
>>> train_label = np.ndarray(shape=(3,), dtype=np.int32, buffer=np.asarray((1,2,3), dtype=np.int32))
>>> train_data
array([[[1, 2]],
[[3, 4]],
[[5, 6]]], dtype=int32)
>>> train_label
array([1, 2, 3], dtype=int32)
下面,我们用三行代码打乱样本数据:
>>> permutation = np.random.permutation(train_label.shape[0])
>>> shuffled_dataset = train_data[permutation, :, :]
>>> shuffled_labels = train_label[permutation]
稍微解释一下代码:
利用 np.random.permutation
函数,我们可以获得打乱后的行号,输出permutation
为:array([2, 1, 0])
。
然后,利用 numpy array
内置的操作 train_data[permutation, :, :]
,我们可以获得打乱行号后的新的训练数据。
我们看看训练数据和标签是不是对应的:
>>> shuffled_dataset
array([[[5, 6]],
[[3, 4]],
[[1, 2]]], dtype=int32)
>>> shuffled_labels
array([3, 2, 1], dtype=int32)
没错,完全按照 permutation
[2, 1, 0] 的顺序重新调整了。
学会这种技巧,妈妈再也不担心我加班了
GitHub上YOLOv5开源代码的训练数据定义 代码地址:https://github.com/ultralytics/YOLOv5 训练数据定义地址:https://github.com/ultr ... 第一: 可以选择在将数据转换成lmdb格式时进行打乱: 设置参数--shuffle=1:(表示打乱训练数据) 默认为0,表示忽略,不打乱. 打乱的目的有两个:防止出现过分有规律的数据,导致过拟合或者不 ... (1)首先进入cmd,输入pip install yagmail (2)思路:1 .连接服务器:yagmail.SMTP(邮箱账号,邮箱密码,邮箱服务器地址,邮箱服务器端口) 2 .准备正文内容:co ... Python/Numpy大数据编程经验 1.边处理边保存数据,不要处理完了一次性保存.不然程序跑了几小时甚至几天后挂了,就啥也没有了.即使部分结果不能实用,也可以分析程序流程的问题或者数据的特点. ... 在经常性读取大量的数值文件时(比如深度学习训练数据),可以考虑现将数据存储为Numpy格式,然后直接使用Numpy去读取,速度相比为转化前快很多. 下面就常用的保存数据到二进制文件和保存数据到文本文件 ... 处理SUN397 的代码,将其分为80% 训练数据以及20% 的测试数据 2016-07-27 1 %% Code for Process SUN397 Scene Classification 2 ... Liblinear and Libsvm-rank训练数据的bash代码: for j in "amazon_mp3" "video_surveillance" ... python 三行代码实现快速排序 最近在看 python cookbook , 里面的例子很精彩,这里就帮过来,做个备忘录 主要利用了行数的递归调用和Python的切片特性,解释一下每行代码的含义: ... Python 入门之代码块.小数据池 与 深浅拷贝 1.代码块 (1)一个py文件,一个函数,一个模块,终端中的每一行都是代码块 (代码块是防止我们频繁的开空间降低效率设计的,当我们定一个变量需要开辟 ... 最近黑科技技术大佬们都在传扬windows系统上安装mac系统,不用买mac电脑也可以使用mac一样的操作环境.什么是黑苹果?一起来看看如何在windows系统上安装mac系统. 更多专题,可关注小编 ... python信用评分卡(附代码,博主录制) https://study.163.com/course/introduction.htm?courseId=1005214003&utm_camp ... 1 # /usr/local/nginx/sbin/nginx 2 /usr/local/nginx/sbin/nginx: error while loading shared libraries: ... 原文:http://blog.sina.com.cn/s/blog_608475eb0100h3h2.html 这里只是第二篇,前面的内容请参阅上一篇 五.常用方法及注意问题 1.用其他方式替代默认的 ... 1.模板方法模式介绍 提到模板我们经常会想到简历模板/PPT模板等,以简历模板为例,不同的人可以使用一样的简历模板,在填充内容时根据自己的名字/工作经历等填写自己的内容,从而形成不同的简历.在OO中模 ... 初学C#的时候,老是被IEnumerable.IEnumerator.ICollection等这样的接口弄的糊里糊涂,我觉得有必要切底的弄清楚IEnumerable和IEnumerator的本质. 下 ... 3. 创建并初始化Spark UI 任何系统都需要提供监控功能,用浏览器能访问具有样式及布局并提供丰富监控数据的页面无疑是一种简单.高效的方式.SparkUI就是这样的服务. 在大型分布式系统中,采用 ... You will need to copy the type library from corelDRAW: C:\Program Files (x86)\Corel\CorelDRAW Graphi ... 有一次,为了模仿翻页效果,设置的启动也是aspx文件.当时因为重装系统的原因,我的系统暂时不支持aspx文件的发布访问.所以,我就在MIME Type里面添加了对aspx文件的访问,如下图: 这样就可 ... 一.分类为:负载均衡类和数据切分类 1.负载均衡中间件提供了请求的转发,降低了单节点的负载,如haproxy,mysql-proxy,mysql-router 2.数据切分中间件按照不同的路由算法分发 ...python numpy 三行代码打乱训练数据的更多相关文章
随机推荐