类型为CV_8U的可选向量,大小为<number_of_variables_in_samples =“”> + <number_of_variables_in_responses>

时间:2019-02-02 22:35:52

标签: c# opencv machine-learning emgucv

我正在尝试在EmguCV中加载TrainData,并且在不指定varType参数的情况下,对于数值数据来说一切正常。
我想加载TrainData使得所有输入是数字和所有标签分类。要指定的数据类型是数字或分类Emgucv具有枚举EmguCV.ML.MlEnum.varType.Numerical或.Categorical其中我无法在当前情况下使用。

using (TrainData td = new TrainData(trainData, Emgu.CV.ML.MlEnum.DataLayoutType.RowSample,trainClasses,null,null,null,?))
            {
                nnet.SetLayerSizes(layerSizeMat);
                nnet.SetActivationFunction(ANN_MLP.AnnMlpActivationFunction.SigmoidSym, 0.6, 1);
                nnet.TermCriteria = new MCvTermCriteria(430, 1.0e-8);
                nnet.SetTrainMethod(ANN_MLP.AnnMlpTrainMethod.Backprop, 0.3, 0);
                try
                {
                    nnet.Train(td, (int)Emgu.CV.ML.MlEnum.AnnMlpTrainingFlag.Default);
                    Console.WriteLine("Training Completed Successfully....");
                }
                catch (Exception e)
                {
                    Console.WriteLine("Training Error:" + e.Message);
                }
            }

Emgucv TrainData varType

它需要CV_8U类型和size +的可选向量,其中包含每个输入和输出变量的类型。

有人可以向我解释上一行的含义,以及如何在EmguCv C#中创建类型为CV_8U的向量。 以MNIST数据集为例,其中784个输入列和1个输出列具有10个分类值。

谢谢

1 个答案:

答案 0 :(得分:0)

Emgucv Github Repository AutoTestML.cs 有一个测试用例,说明需要什么。以下是代码段:

Matrix<Byte> varType = new Matrix<byte>(data.Cols + 1, 1);
varType.SetValue((byte) MlEnum.VarType.Numerical); //the data is numerical
varType[data.Cols, 0] = (byte) MlEnum.VarType.Categorical; //the response is catagorical
// .....
using (TrainData td = new TrainData(data, MlEnum.DataLayoutType.RowSample, response, null, null, null, varType))