解决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使用pil生成缩略图的方法
Mar 26 Python
python文件写入实例分析
Apr 08 Python
Python爬虫包BeautifulSoup异常处理(二)
Jun 17 Python
Python流行ORM框架sqlalchemy安装与使用教程
Jun 04 Python
Python类如何定义私有变量
Feb 03 Python
Python 解析pymysql模块操作数据库的方法
Feb 18 Python
python实现门限回归方式
Feb 29 Python
Python timeit模块原理及使用方法
Oct 10 Python
python 制作磁力搜索工具
Mar 04 Python
python实现socket简单通信的示例代码
Apr 13 Python
Python学习之时间包使用教程详解
Mar 21 Python
python中 .npy文件的读写操作实例
Apr 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中array_merge和array相加的区别分析
2013/06/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
PHP 返回数组后处理方法(开户成功后弹窗提示)
2017/07/03 PHP
php与阿里云短信接口接入操作案例分析
2020/05/27 PHP
TNC vs IO BO3 第一场2.13
2021/03/10 DOTA
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
利用js动态添加删除table行的示例代码
2013/12/16 Javascript
angularJS提交表单(form)
2015/02/09 Javascript
JS动态添加选项案例分析
2016/10/17 Javascript
JS图片预加载插件详解
2017/06/21 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
vue框架下部署上线后刷新报404问题的解决方案(推荐)
2019/04/03 Javascript
15 分钟掌握vue-next响应式原理
2019/10/13 Javascript
vue把输入框的内容添加到页面的实例讲解
2019/11/11 Javascript
详解微信小程序中var、let、const用法与区别
2020/01/11 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
[00:12]DAC2018 天才少年转战三号位,他的SOLO是否仍如昔日般强大?
2018/04/06 DOTA
[01:07:46]完美世界DOTA2联赛循环赛 Magma vs IO BO2第二场 11.01
2020/11/02 DOTA
Python三种遍历文件目录的方法实例代码
2018/01/19 Python
Python基于最小二乘法实现曲线拟合示例
2018/06/14 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python 字典操作提取key,value的方法
2019/06/26 Python
Python调用jar包方法实现过程解析
2020/08/11 Python
五个2015 年最佳HTML5 框架
2015/11/11 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
TCP/IP模型的分界线
2012/12/01 面试题
LINUX下线程,GDI类的解释
2016/12/14 面试题
三分钟英语演讲稿
2014/04/24 职场文书
艾滋病宣传标语
2014/06/25 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android