浅谈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杀死一个线程的方法
Sep 06 Python
python 查找字符串是否存在实例详解
Jan 20 Python
Python实现返回数组中第i小元素的方法示例
Dec 04 Python
利用python编写一个图片主色转换的脚本
Dec 07 Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 Python
基于DataFrame改变列类型的方法
Jul 25 Python
Python二叉搜索树与双向链表转换算法示例
Mar 02 Python
在Python中如何传递任意数量的实参的示例代码
Mar 21 Python
python xlwt如何设置单元格的自定义背景颜色
Sep 03 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
python-numpy-指数分布实例详解
Dec 07 Python
Python 快速验证代理IP是否有效的方法实现
Jul 15 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函数连续调用实例分析
2015/07/30 PHP
php遍历、读取文件夹中图片并分页显示图片的方法
2016/11/15 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
2017/12/26 PHP
PHP PDOStatement::columnCount讲解
2019/01/30 PHP
PHP自动载入类文件函数__autoload的使用方法
2019/03/25 PHP
javascript 文件的同步加载与异步加载实现原理
2012/12/13 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
JQuery显示、隐藏div的几种方法简明总结
2015/04/16 Javascript
利用CSS3在Angular中实现动画
2016/01/15 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
解决使用vue.js路由后失效的问题
2018/03/17 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
vue或react项目生产环境去掉console.log的操作
2020/09/02 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中工作日类库Busines Holiday的介绍与使用
2017/07/06 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
Python排序搜索基本算法之希尔排序实例分析
2017/12/09 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
python实现批量修改服务器密码的方法
2019/08/13 Python
如何在Django中使用聚合的实现示例
2020/03/23 Python
python将unicode和str互相转化的实现
2020/05/11 Python
Python3爬虫中Splash的知识总结
2020/07/10 Python
深入解析HTML5的IndexedDB索引数据库
2015/09/14 HTML / CSS
The Beach People美国:澳洲海滨奢华品牌
2018/07/05 全球购物
美国美食礼品篮网站:Gourmet Gift Baskets
2019/12/15 全球购物
教师实习期自我鉴定
2013/10/06 职场文书
员工合理化建议书
2014/05/19 职场文书
农村文化活动总结
2014/08/28 职场文书
解除劳动合同证明书
2014/09/26 职场文书
群众路线教育党员自我剖析材料
2014/10/06 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
童年读书笔记
2015/06/26 职场文书
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python
python中Pyqt5使用Qlabel标签播放视频
2022/04/22 Python