浅谈Keras中shuffle和validation_split的顺序


Posted in Python onJune 19, 2020

模型的fit函数有两个参数,shuffle用于将数据打乱,validation_split用于在没有提供验证集的时候,按一定比例从训练集中取出一部分作为验证集

这里有个陷阱是,程序是先执行validation_split,再执行shuffle的,所以会出现这种情况:

假如你的训练集是有序的,比方说正样本在前负样本在后,又设置了validation_split,那么你的验证集中很可能将全部是负样本

同样的,这个东西不会有任何错误报出来,因为Keras不可能知道你的数据有没有经过shuffle,保险起见如果你的数据是没shuffle过的,最好手动shuffle一下

补充知识:Keras使用陷阱

1 TF卷积核与TH卷积核

Keras提供了两套后端,Theano和Tensorflow。如果你从无到有搭建自己的一套网络,则大可放心。但如果你想使用一个已有网络,或把一个用th/tf 训练的网络以另一种后端应用,在载入的时候你就应该特别小心了。

卷积核与所使用的后端不匹配,不会报任何错误,因为它们的shape是完全一致的,没有方法能够检测出这种错误。

在使用预训练模型时,一个建议是首先找一些测试样本,看看模型的表现是否与预计的一致。

如需对卷积核进行转换,可以使用utils.convert_all_kernels_in_model对模型的所有卷积核进行转换

2 向BN层中载入权重

如果你不知道从哪里淘来一个预训练好的BN层,想把它的权重载入到Keras中,要小心参数的载入顺序。

一个典型的例子是,将caffe的BN层参数载入Keras中,caffe的BN由两部分构成,bn层的参数是mean,std,scale层的参数是gamma,beta。

按照BN的文章顺序,似乎载入Keras BN层的参数应该是[mean, std, gamma, beta];

然而不是的,Keras的BN层参数顺序应该是[gamma, beta, mean, std],这是因为gamma和beta是可训练的参数,而mean和std不是。Keras的可训练参数在前,不可训练参数在后

错误的权重顺序不会引起任何报错,因为它们的shape完全相同

3 shuffle和validation_split的顺序

模型的fit函数有两个参数,shuffle用于将数据打乱,validation_split用于在没有提供验证集的时候,按一定比例从训练集中取出一部分作为验证集.

这里有个陷阱是,程序是先执行validation_split,再执行shuffle的,所以会出现这种情况:

假如你的训练集是有序的,比方说正样本在前负样本在后,又设置了validation_split,那么你的验证集中很可能将全部是负样本。

同样的,这个东西不会有任何错误报出来,因为Keras不可能知道你的数据有没有经过shuffle,保险起见如果你的数据是没shuffle过的,最好手动shuffle一下。

4 Merge层的层对象与函数方法

Keras定义了一套用于融合张量的方法,位于keras.layers.Merge,里面有两套工具,以大写字母开头的是Keras Layer类,使用这种工具是需要实例化一个Layer对象,然后再使用。以小写字母开头的是张量函数方法,本质上是对Merge Layer对象的一个包装,但使用更加方便一些。注意辨析。

以上这篇浅谈Keras中shuffle和validation_split的顺序就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python类的专用方法实例分析
Jan 09 Python
python使用append合并两个数组的方法
Apr 28 Python
python 读取excel文件生成sql文件实例详解
May 12 Python
Django中利用filter与simple_tag为前端自定义函数的实现方法
Jun 15 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
Python使用Selenium爬取淘宝异步加载的数据方法
Dec 17 Python
python pandas生成时间列表
Jun 29 Python
详解DeBug Python神级工具PySnooper
Jul 03 Python
python实现倒计时小工具
Jul 29 Python
nginx搭建基于python的web环境的实现步骤
Jan 03 Python
python tqdm库的使用
Nov 30 Python
python二维图制作的实例代码
Dec 03 Python
Python爬虫headers处理及网络超时问题解决方案
Jun 19 #Python
sklearn和keras的数据切分与交叉验证的实例详解
Jun 19 #Python
Python虚拟环境的创建和包下载过程分析
Jun 19 #Python
通过实例解析python创建进程常用方法
Jun 19 #Python
keras model.fit 解决validation_spilt=num 的问题
Jun 19 #Python
为什么是 Python -m
Jun 19 #Python
Python 私有属性和私有方法应用场景分析
Jun 19 #Python
You might like
使用PHP遍历文件夹与子目录的函数代码
2011/09/26 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
2014/11/18 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
ThinkPHP实现静态缓存和动态缓存示例代码
2017/05/02 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
js实现的切换面板实例代码
2013/06/17 Javascript
解析js原生方法创建表格效率测试
2013/07/08 Javascript
[将免费进行到底]在Amazon的一年免费服务器上安装Node.JS, NPM和OurJS博客
2014/08/18 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
JS实现图片垂直居中显示小结
2016/12/13 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
vue router学习之动态路由和嵌套路由详解
2017/09/21 Javascript
React实践之Tree组件的使用方法
2017/09/30 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
原生js实现点击轮播切换图片
2020/02/11 Javascript
Python 命令行参数sys.argv
2008/09/06 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
python获取代码运行时间的实例代码
2018/06/11 Python
python实现三次样条插值
2018/12/17 Python
Python3中的bytes和str类型详解
2019/05/02 Python
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
原装进口全世界:天猫国际
2016/08/03 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
介绍一下MYSQL常用的优化技巧
2012/10/25 面试题
销售人员自我评价怎么写
2013/09/19 职场文书
国际贸易个人求职信范文
2014/01/04 职场文书
活动宣传策划方案
2014/05/23 职场文书
理财计划书
2014/08/14 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
奔腾年代观后感
2015/06/09 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
javascript的setTimeout()使用方法总结
2021/11/20 Javascript