浅谈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登录Dr.com思路以及代码分享
Jun 25 Python
Python用GET方法上传文件
Mar 10 Python
详解Python中映射类型(字典)操作符的概念和使用
Aug 19 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
Mar 16 Python
Python基础教程之浅拷贝和深拷贝实例详解
Jul 15 Python
python实现朴素贝叶斯分类器
Mar 28 Python
Pandas 同元素多列去重的实例
Jul 03 Python
Python制作微信好友背景墙教程(附完整代码)
Jul 17 Python
用什么库写 Python 命令行程序(示例代码详解)
Feb 20 Python
python mysql中in参数化说明
Jun 05 Python
python 读取.nii格式图像实例
Jul 01 Python
Python爬虫之Selenium实现键盘事件
Dec 04 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
1.PHP简介
2006/10/09 PHP
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
使用php 获取时间今天明天昨天时间戳的详解
2013/06/20 PHP
php实现图片添加描边字和马赛克的方法
2014/12/10 PHP
PHP二维数组去重算法
2016/12/17 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
聊聊 PHP 8 新特性 Attributes
2020/08/19 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
Jquery 例外被抛出且未被接住原因介绍
2013/09/04 Javascript
JQuery验证jsp页面属性是否为空(实例代码)
2013/11/08 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
jQuery实现的超酷苹果风格图标滑出菜单效果代码
2015/09/16 Javascript
详解Javascript函数声明与递归调用
2016/10/22 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
jquery点击回车键实现登录效果并默认焦点的方法
2018/03/09 jQuery
详解基于Vue cli生成的Vue项目的webpack4升级
2018/06/19 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[03:07]DOTA2英雄基础教程 冰霜诅咒极寒幽魂
2013/12/06 DOTA
Django中Middleware中的函数详解
2019/07/18 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
在 Python 中使用 MQTT的方法
2020/08/18 Python
在线服装零售商:SheIn
2016/07/22 全球购物
门诊手术室工作制度
2014/01/30 职场文书
小学教师办公室制度
2014/02/03 职场文书
保护环境的建议书
2014/03/12 职场文书
一分钟演讲稿
2014/04/30 职场文书
科学发展观演讲稿
2014/09/11 职场文书
开展党的群众路线教育实践活动工作总结
2014/11/05 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
车间班组长竞聘书
2015/09/15 职场文书
求职信:会计求职的写作技巧
2019/04/24 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript
JavaScript实现优先级队列
2021/12/06 Javascript
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android