标注MLP

时间:2016-11-08 16:34:39

标签: c++ opencv neural-network classification labels

我对MLP上的标签有疑问,首先我认为它与SVM标签相同,但在尝试下面的代码之后:

 Mat labels(numSamples, 3 , CV_32FC1, Scalar(3,0));
    labels.rowRange(0, numcar - 1) = Scalar (1.0);
    labels.rowRange(numcar, numcar + numbus - 1) = Scalar (2.0);
    labels.rowRange(numcar + numbus, numSamples) = Scalar (3.0);

即使我不得不用另一个图像替换图像,也要确定相同值的预测。在我搜索之后,事实证明存在差异。标签必须使用矢量,我不知道如何使用矢量标记它,因为我在这种情况下是新手。 以下是培训代码

 Mat layers = Mat(4, 1 ,CV_32SC1);
int sz = data.cols;
layers.row(0) = Scalar(sz);
layers.row(1) = Scalar(10);
layers.row(2) = Scalar(10);
layers.row(3) = Scalar(3);
CvANN_MLP mlp;
CvANN_MLP_TrainParams params;
CvTermCriteria criteria;
criteria.max_iter = 1000;
criteria.epsilon  = 0.0001;
criteria.type     = CV_TERMCRIT_ITER | CV_TERMCRIT_EPS;
params.train_method    = CvANN_MLP_TrainParams::BACKPROP;
params.bp_dw_scale     = 0.5f;
params.bp_moment_scale = 0.5f;
params.term_crit       = criteria;
mlp.create(layers, CvANN_MLP::SIGMOID_SYM);
mlp.train(data , labels ,Mat(),Mat(),params);

和预测

Mat response(1, 3, cv_32FC1);
mlp.predict (sample, response);
cout << response << endl;

我在这里想要标记汽车,公共汽车和卡车。 帮我解决这个问题,谢谢关注

0 个答案:

没有答案