浅谈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中编写ORM框架的入门指引
Apr 29 Python
python中input()与raw_input()的区别分析
Feb 27 Python
使用pyecharts无法import Bar的解决方案
Apr 23 Python
关于Django显示时间你应该知道的一些问题
Dec 25 Python
Python DataFrame.groupby()聚合函数,分组级运算
Sep 18 Python
在Pycharm中项目解释器与环境变量的设置方法
Oct 29 Python
python分批定量读取文件内容,输出到不同文件中的方法
Dec 08 Python
python根据文本生成词云图代码实例
Nov 15 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 Python
Pytorch 神经网络—自定义数据集上实现教程
Jan 07 Python
python编写softmax函数、交叉熵函数实例
Jun 11 Python
keras自定义损失函数并且模型加载的写法介绍
Jun 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
保存到桌面、设为桌面且带图标的PHP代码
2013/11/19 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
php魔术函数__call()用法实例分析
2015/02/13 PHP
PHP实现Huffman编码/解码的示例代码
2018/04/20 PHP
js页面跳转常用的几种方式
2010/11/25 Javascript
javascript suggest效果 自动完成实现代码分享
2012/02/17 Javascript
js定时器的使用(实例讲解)
2014/01/06 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
对 jQuery 中 data 方法的误解分析
2014/06/18 Javascript
深入理解javascript构造函数和原型对象
2014/09/23 Javascript
JS实现文字向下滚动完整实例
2015/02/06 Javascript
基于Echarts 3.19 制作常用的图形(非静态)
2016/05/19 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
2017/08/09 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
JS高级技巧(简洁版)
2018/07/29 Javascript
puppeteer库入门初探
2019/01/09 Javascript
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛 DT VS HGT
2014/05/22 DOTA
[04:44]DOTA2西游记战队视频彩蛋流出 师徒开黑巧遇林书豪
2016/08/03 DOTA
python实现查询苹果手机维修进度
2015/03/16 Python
Python过滤列表用法实例分析
2016/04/29 Python
python实现自动登录
2018/09/17 Python
Python 支持向量机分类器的实现
2020/01/15 Python
Python 使用Opencv实现目标检测与识别的示例代码
2020/09/08 Python
eDreams葡萄牙:全球最大的在线旅行社之一
2019/04/15 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
家长会主持词开场白
2014/03/18 职场文书
个人求职自荐信范文
2015/03/06 职场文书
庆元旦主持词
2015/07/06 职场文书
2015年秋季小学开学典礼主持词
2015/07/16 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
八年级语文教学反思
2016/03/03 职场文书
python中出现invalid syntax报错的几种原因分析
2022/02/12 Python