解决keras,val_categorical_accuracy:,0.0000e+00问题


Posted in Python onJuly 02, 2020

问题描述:

在利用神经网络进行分类和识别的时候,使用了keras这个封装层次比较高的框架,backend使用的是tensorflow-cpu。

在交叉验证的时候,出现 val_categorical_accuracy: 0.0000e+00的问题。

问题分析:

首先,弄清楚,训练集、验证集、测试集的区别,验证集是从训练集中提前拿出一部分的数据集。在keras中,一般都是使用这种方式来指定验证集占训练集和的总大小。

validation_split=0.2

比如,经典的数据集MNIST,共有60000个训练集,就会

Train on 48000 samples, validate on 12000 samples

我自己学习使用的数据集比较小

训练数据集样本数: 498 ,标签个数 498

Train on 398 samples, validate on 100 samples

基本上符合4:1(0.2)的分配

出现 val_categorical_accuracy: 0.0000e+00的问题,我这边的原因主要是,样本本身是有规律的,导致分配的验证集的标签可能在训练集中可能就没有。

(PS:我实际看了下,498个样本共10个标签,后100个验证集占据了基本上后面3个标签(实际上,这三个标签占了103个样本),也就是前面的训练集基本上就没有后面的标签,整体占据前面7个标签)

问题解决:

把最初始的训练集打乱,当然,标签也要跟着移动。

index = [i for i in range(len(x_train))]
np.random.shuffle(index)
x_train = x_train[index]
y_train = y_train[index]
 
model.fit(x_train, y_train, batch_size=32, epochs=10, validation_split=0.2, verbose=1)

同样的问题表现,可能有不同的原因,解决方法也不尽相同,这里只是和大家分享我自己的问题解决过程。

补充知识:keras中自定义验证集的性能评估

如下所示:

def AUC(y_true,y_pred):
not_y_pred=np.logical_not(y_pred)
y_int1=y_true*y_pred
y_int0=np.logical_not(y_true)*not_y_pred
TP=np.sum(y_pred*y_int1)
FP=np.sum(y_pred)-TP
TN=np.sum(not_y_pred*y_int0)
FN=np.sum(not_y_pred)-TN
TPR=np.float(TP)/(TP+FN)
FPR=np.float(FP)/(FP+TN)
return((1+TPR-FPR)/2)

以上这篇解决keras,val_categorical_accuracy:,0.0000e+00问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python在windows下创建隐藏窗口子进程的方法
Jun 04 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
May 17 Python
Python设计模式之抽象工厂模式
Aug 25 Python
Python探索之ModelForm代码详解
Oct 26 Python
tensorflow学习笔记之简单的神经网络训练和测试
Apr 15 Python
django从请求到响应的过程深入讲解
Aug 01 Python
python根据txt文本批量创建文件夹
Dec 08 Python
Python微信操控itchat的方法
May 31 Python
使用Python和百度语音识别生成视频字幕的实现
Apr 09 Python
Python接口测试文件上传实例解析
May 22 Python
virtualenv介绍及简明教程
Jun 23 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
如何基于Python爬取隐秘的角落评论
Jul 02 #Python
keras中epoch,batch,loss,val_loss用法说明
Jul 02 #Python
Python使用tkinter实现摇骰子小游戏功能的代码
Jul 02 #Python
浅谈keras使用预训练模型vgg16分类,损失和准确度不变
Jul 02 #Python
python脚本和网页有何区别
Jul 02 #Python
keras:model.compile损失函数的用法
Jul 01 #Python
win10安装python3.6的常见问题
Jul 01 #Python
You might like
PHP脚本的10个技巧(2)
2006/10/09 PHP
基于Discuz security.inc.php代码的深入分析
2013/06/03 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP单链表的实现代码
2016/07/05 PHP
php实现留言板功能(代码详解)
2017/03/28 PHP
ExtJS 2.0 实用简明教程之布局概述
2009/04/29 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
jQuery过滤选择器用法示例
2016/09/12 Javascript
通过JS获取Request.QueryString()参数的值实现方法
2016/09/27 Javascript
three.js中3D视野的缩放实现代码
2017/11/16 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
小程序中canvas的drawImage方法参数使用详解
2019/07/04 Javascript
Node.js API详解之 readline模块用法详解
2020/05/22 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
[45:18]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第一场
2018/04/04 DOTA
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
详解python3中zipfile模块用法
2018/06/18 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python报错: 'list' object has no attribute 'shape'的解决
2020/07/15 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
Python基于内置函数type创建新类型
2020/10/22 Python
关于Python错误重试方法总结
2021/01/03 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
沃尔玛旗下墨西哥超市:Bodega Aurrera
2020/11/13 全球购物
Java基础面试题
2014/07/19 面试题
冰淇淋开店创业计划书
2014/02/01 职场文书
个人自我评价范文
2014/02/05 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
儿子满月酒致辞
2015/07/29 职场文书
2016年入党心得体会范文
2016/01/23 职场文书
Java Optional<Foo>转换成List<Bar>的实例方法
2021/06/20 Java/Android