我正在尝试在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);
}
}
它需要CV_8U类型和size +的可选向量,其中包含每个输入和输出变量的类型。
有人可以向我解释上一行的含义,以及如何在EmguCv C#中创建类型为CV_8U的向量。 以MNIST数据集为例,其中784个输入列和1个输出列具有10个分类值。
谢谢
答案 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))