浅谈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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
python去掉行尾的换行符方法
Jan 04 Python
详解 Python 读写XML文件的实例
Aug 02 Python
mac 安装python网络请求包requests方法
Jun 13 Python
python反编译学习之字节码详解
May 19 Python
用python3读取python2的pickle数据方式
Dec 25 Python
django执行数据库查询之后实现返回的结果集转json
Mar 31 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
Jun 16 Python
pandas to_excel 添加颜色操作
Jul 14 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
Python List remove()实例用法详解
Aug 02 Python
为了顺利买到演唱会的票用Python制作了自动抢票的脚本
Oct 16 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实现禁用IE和火狐的缓存问题
2012/12/03 PHP
cakephp打印sql语句的方法
2015/02/13 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
js下写一个事件队列操作函数
2010/07/19 Javascript
一个关于jqGrid使用的小例子(行按钮)
2011/11/04 Javascript
jQery使网页在显示器上居中显示适用于任何分辨率
2014/06/09 Javascript
JavaScript添加随滚动条滚动窗体的方法
2016/02/23 Javascript
jQuery使用Layer弹出层插件闪退问题
2016/12/22 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
js实现会跳动的日历效果(完整实例)
2017/10/18 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
vue实现在v-html的html字符串中绑定事件
2019/10/28 Javascript
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
Python 深入理解yield
2008/09/06 Python
Python3实现获取图片文字里中文的方法分析
2018/12/13 Python
python 使用poster模块进行http方式的文件传输到服务器的方法
2019/01/15 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
Python的对象传递与Copy函数使用详解
2019/12/26 Python
Python3列表List入门知识附实例
2020/02/09 Python
一文解决django 2.2与mysql兼容性问题
2020/07/15 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
CSS3 实现弹跳的小球动画
2020/10/26 HTML / CSS
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
ABOUT YOU罗马尼亚:超过600个时尚品牌
2019/09/19 全球购物
元旦晚会邀请函
2014/01/27 职场文书
学习礼仪心得体会
2014/09/01 职场文书
出差报告范文
2014/11/06 职场文书
2015暑期工社会实践报告
2015/07/13 职场文书
Dashboard管理Kubernetes集群与API访问配置
2022/04/01 Servers
GO中sync包自由控制并发示例详解
2022/08/05 Golang