在MATLAB中计算ANN的误报率(逻辑错误)

时间:2018-05-07 19:50:36

标签: matlab neural-network

我的大学讲师为我们提供了MATLAB代码,该代码包含了人工神经网络的使用,可根据图像中是否有图像来预测和分类大量图像。

我试图通过编写一些能够快速确定ANN分类输出的误报率和误报率的额外代码来让生活变得更轻松。

我已经编写了代码,但是当我训练和运行神经网络时,正确和不正确的分类都出现在每个约30个,60个中。前30个是徽标图像,第二个30是非徽标图像。这意味着网络的成功率大约为50%,这非常糟糕。我也经过并手动测试了每张图片,虽然有一些错误,但肯定没有50:50分为正确和错误的分类。

考虑到ANN的代码是由我的讲师写的,我不认为ANN的输出是问题,而是我在确定FNR和FPR值时的逻辑。但是我在过去的半小时里一直在盯着它看,我似乎无法弄清问题是什么。如果有人可以查看它并查看我是否有任何逻辑错误并指出它们我会很感激。有时一双新鲜的眼睛会有所帮助。

for i = 1 : number_test_images

    test_image=imread(['Test_logo\' test_folder(i+2).name]);
    feature_vector=get_featureVector(test_image); % function get_featureVector returns a column vector.
    Y_testing = net(feature_vector');  % compute the output of the trained network


    if round(Y_testing)>=.5, %logo classification
        disp('Logo');
        if current_image <= 30 %first 30 images are logos = correct classification
            correct = correct + 1;
        else current_image > 30 %last 30 images are non-logos = incorrect classification
            incorrect = incorrect + 1;
        end

    else
        disp('Non logo'); %non-logo classification 
        if current_image <= 30 %first 30 images are logos = incorrect classification
            incorrect = incorrect + 1;
        else current_image > 30 %last 30 images are non-logos = correct classification
            correct = correct + 1;
        end
    end
end

FPR = incorrect/30;
FNR = correct/30;
error = ((FPR+FNR)/2);

1 个答案:

答案 0 :(得分:0)

我认为if-else语句存在问题,而current_image > 30语句的执行不是if-else评估的一部分。

应该是

if current_image <= 30 %first 30 images are logos = correct classification
            correct = correct + 1;
elseif current_image > 30 %last 30 images are non-logos = incorrect classification
            incorrect = incorrect + 1;
end