keras val_categorical_accuracy: 0.0000e+00问题

keras训练中val_categorical_accuracy为0的解决办法
在使用keras进行神经网络分类时遇到val_categorical_accuracy为0.0000e+00的问题,原因是训练集与验证集分配导致验证集标签在训练集中缺失。解决方案是对原始训练集进行随机打乱,确保标签分布均匀。

问题描述:

    在利用神经网络进行分类和识别的时候,使用了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个标签)

问题解决:

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


                
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值