浅谈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)
Sep 14 Python
Python深度优先算法生成迷宫
Jan 22 Python
python 字典 按key值大小 倒序取值的实例
Jul 06 Python
python 读取文件并替换字段的实例
Jul 12 Python
Sanic框架安装与简单入门示例
Jul 16 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
May 23 Python
详解Python在使用JSON时需要注意的编码问题
Dec 06 Python
Pyecharts绘制全球流向图的示例代码
Jan 08 Python
python实现Pyecharts实现动态地图(Map、Geo)
Mar 25 Python
python实现斗地主分牌洗牌
Jun 22 Python
python Selenium 库的使用技巧
Oct 16 Python
python绘制云雨图raincloud plot
Aug 05 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生成HTML静态页面实例代码
2008/08/31 PHP
php is_file()和is_dir()用于遍历目录时用法注意事项
2010/03/02 PHP
php解压文件代码实现php在线解压
2014/02/13 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
kindeditor修复会替换script内容的问题
2015/04/03 Javascript
JS中处理时间之setUTCMinutes()方法的使用
2015/06/12 Javascript
js使用cookie记录用户名的方法
2015/11/26 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
微信小程序开发之toast提示插件使用示例
2017/06/08 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
VUE:vuex 用户登录信息的数据写入与获取方式
2019/11/11 Javascript
Vue中axios拦截器如何单独配置token
2019/12/27 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
Python生成器(Generator)详解
2015/04/13 Python
django 删除数据库表后重新同步的方法
2018/05/27 Python
python自动化工具之pywinauto实例详解
2019/08/26 Python
Python高级编程之消息队列(Queue)与进程池(Pool)实例详解
2019/11/01 Python
Python操作注册表详细步骤介绍
2020/02/05 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
CSS3等相关属性制作分页导航实现代码
2012/12/24 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
黄色火烈鸟:De Gele Flamingo
2019/03/18 全球购物
《长城和运河》教学反思
2014/04/14 职场文书
应届生找工作求职信
2014/06/24 职场文书
建筑结构施工求职信
2014/07/11 职场文书
员工自我评价范文
2015/03/11 职场文书
用Python实现Newton插值法
2021/04/17 Python
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
python中tkinter复选框使用操作
2021/11/11 Python
Mysql InnoDB 的内存逻辑架构
2022/05/06 MySQL