浅谈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 2.7.x 和 3.x 版本的重要区别小结
Nov 28 Python
Python编程中的for循环语句学习教程
Oct 14 Python
python学习之编写查询ip程序
Feb 27 Python
python实现机器人行走效果
Jan 29 Python
pandas表连接 索引上的合并方法
Jun 08 Python
python自动发送邮件脚本
Jun 20 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
May 13 Python
python下的opencv画矩形和文字注释的实现方法
Jul 09 Python
在自动化中用python实现键盘操作的方法详解
Jul 19 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
通过代码简单了解django model序列化作用
Nov 12 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 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
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
thinkphp分页集成实例
2017/07/24 PHP
TP5框架请求响应参数实例分析
2019/10/17 PHP
20行代码实现的一个CSS覆盖率测试脚本
2013/07/07 Javascript
javascript使用location.search的示例
2013/11/05 Javascript
jQuery 事件的命名空间简单了解
2013/11/22 Javascript
如何在指定的地方插入html内容和文本内容
2013/12/23 Javascript
JavaScript中的Repaint和Reflow用法详解
2015/07/27 Javascript
jQuery实现的自动加载页面功能示例
2016/09/04 Javascript
JS实现搜索框文字可删除功能
2016/12/28 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
使用重写url机制实现验证码换一张功能
2017/08/01 Javascript
vue2组件之select2调用的示例代码
2017/10/12 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
微信小程序左滑删除实现代码实例
2019/09/16 Javascript
jQuery实现鼠标滑动切换图片
2020/05/27 jQuery
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Python3简单实例计算同花的概率代码
2017/12/06 Python
python在非root权限下的安装方法
2018/01/23 Python
对python中的for循环和range内置函数详解
2018/04/17 Python
python Kmeans算法原理深入解析
2019/08/23 Python
复化梯形求积分实例——用Python进行数值计算
2019/11/20 Python
python实现的分析并统计nginx日志数据功能示例
2019/12/21 Python
Python openpyxl模块原理及用法解析
2020/01/19 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
HelloFresh奥地利:立即订购烹饪盒
2019/02/22 全球购物
澳大利亚网上买书:Angus & Robertson
2019/07/21 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
2014年商场超市庆元旦活动方案
2014/02/14 职场文书
物业品质提升方案
2014/06/08 职场文书
关于战胜挫折的名言警句大全!
2019/07/05 职场文书
windows10声卡驱动怎么安装?win10声卡驱动安装操作步骤教程
2022/08/05 数码科技