我试图建立我自己的CNN (Alexnet模型)的交通标志识别使用MATCONVNET。我使用来自德国交通标志识别基准(http://benchmark.ini.rub.de/?section=gtsrb&subsection=datase)的图像数据集来创建我自己的IMDB,该数据库由43个类别的道路交通标志的标记训练、验证和测试数据组成。
现在我面临两个挑战。
如果你对我需要改变什么或者做得更好,请有人帮忙吗?
发布于 2017-03-30 16:41:27
我对MATCONVNET并不太熟悉,所以我可能误解了您的问题,但是评估分类器的一般规则是交叉验证(即在不同子集上进行训练和测试,并在多个子集配置上重复)。
一种配置
若要生成可以使用的数据配置,请执行以下操作
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是一个很好的起点。如果您在分类测试集方面有困难,则会逐渐增加。
置换配置
此分析的一个问题是只对一个配置进行评估。对于大规模的数据集或集合,泛化并不重要,这可能是可以的。但是,您可以通过跨
nchoosek(...),您可以表示所有可能的配置,并对每个配置进行测试。变得不可能长得很快。选择任意的、大量的这些配置也是可行的。如果您的观测数字非常低,这在低成本下是有用的,特别是当您使用自举验证时。可能与你的分析无关。https://stackoverflow.com/questions/43122026
复制相似问题