首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何评估我自己训练的MATCONNET CNN网络

如何评估我自己训练的MATCONNET CNN网络
EN

Stack Overflow用户
提问于 2017-03-30 15:22:14
回答 1查看 150关注 0票数 0

我试图建立我自己的CNN (Alexnet模型)的交通标志识别使用MATCONVNET。我使用来自德国交通标志识别基准(http://benchmark.ini.rub.de/?section=gtsrb&subsection=datase)的图像数据集来创建我自己的IMDB,该数据库由43个类别的道路交通标志的标记训练、验证和测试数据组成。

现在我面临两个挑战。

  1. 我的网络没有融合。我有一个大约0.977的稳态误差
  2. 我试图评估我的训练网络,即使有这样的错误率,但这是我最大的挑战。我还没有弄清楚如何在MATCONVNET中评估自我训练的网络,也没有什么有用的材料可以帮助我。

如果你对我需要改变什么或者做得更好,请有人帮忙吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-30 16:41:27

我对MATCONVNET并不太熟悉,所以我可能误解了您的问题,但是评估分类器的一般规则是交叉验证(即在不同子集上进行训练和测试,并在多个子集配置上重复)。

一种配置

若要生成可以使用的数据配置,请执行以下操作

代码语言:javascript
复制
nObservations = size(data,1);
y_act = ... ; % class labels for each observation
ratio = .5; 
net = ... %your net definition

[Train,Test] = crossvalind('HoldOut',nObservations,ratio);
[net,...] = train(net,data(Train,:))
y_exp = predict(net,data(Test,:))
rate = length(find(y_exp == y_act(Test)))/...
       numel(y_act(Test));

比率是一个比你原来的更好的指标。根据您的模型,您可能希望确保类的分布比例是均匀的(或者甚至是相等的数量,这将要求您抛出一些观察结果,这样您就可以得到相同的类总数)。为了确保这一点,您可以使用crossvalind独立地划分每个类,然后合并成您的列车/测试集。

你也可以玩你的火车:测试比率。.5是一个很好的起点。如果您在分类测试集方面有困难,则会逐渐增加。

置换配置

此分析的一个问题是只对一个配置进行评估。对于大规模的数据集或集合,泛化并不重要,这可能是可以的。但是,您可以通过跨

  1. 集合configurationSay中的所有组合将数据集划分为A、B、C和D。您可以训练( A,B,C)-test(D),train(A,B,D)-test(C),.训练(B,C,D)-test(A)和平均预测率 这通常是“足够好”,但您必须承认,在小数据集中,您可能在其中一个集合中有一个倾斜的表示。
  2. 集合中的所有可能配置 使用nchoosek(...),您可以表示所有可能的配置,并对每个配置进行测试。变得不可能长得很快。选择任意的、大量的这些配置也是可行的。如果您的观测数字非常低,这在低成本下是有用的,特别是当您使用自举验证时。可能与你的分析无关。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43122026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档