浅谈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中去空格函数的用法
Aug 21 Python
wxPython窗口中文乱码解决方法
Oct 11 Python
深入理解Python中变量赋值的问题
Jan 12 Python
django加载本地html的方法
May 27 Python
django初始化数据库的实例
May 27 Python
python解决字符串倒序输出的问题
Jun 25 Python
dataframe 按条件替换某一列中的值方法
Jan 29 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
Mar 30 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
Python超简单容易上手的画图工具库推荐
May 10 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
smarty模板局部缓存方法使用示例
2014/06/17 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
php blowfish加密解密算法
2016/07/02 PHP
PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】
2016/12/24 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
2008/10/29 Javascript
javascript 学习之旅 (3)
2009/02/05 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
js自定义方法通过隐藏iframe实现文件下载
2013/02/21 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
Javascript继承机制详解
2017/05/30 Javascript
Nodejs实现多房间简易聊天室功能
2017/06/20 NodeJs
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
微信小程序如何连接Java后台
2019/08/08 Javascript
python购物车程序简单代码
2018/04/18 Python
对Tensorflow中的矩阵运算函数详解
2018/07/27 Python
python+flask实现API的方法
2018/11/21 Python
python环境下安装opencv库的方法
2020/03/05 Python
详解基于canvas的视频遮罩插件
2018/01/04 HTML / CSS
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
英国时尚饰品和发饰购物网站:Claire’s
2017/07/04 全球购物
Bally美国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/05/18 全球购物
施华洛世奇新加坡官网:SWAROVSKI新加坡
2020/10/06 全球购物
军训自我鉴定100字
2014/02/13 职场文书
护理专业毕业生自我鉴定总结
2014/03/24 职场文书
数控专业毕业生求职信
2014/06/12 职场文书
生活部的活动方案
2014/08/19 职场文书
亚布力滑雪场导游词
2015/02/09 职场文书
2016大学生社会实践单位评语
2015/12/01 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS