我试图在TrainData中加载EmguCV,对于数值数据来说,一切都很好,而无需指定varType参数。
我想加载TrainData,这样所有输入都是数字的,所有标签都是绝对的。若要指定数据类型为数字类型或绝对类型,Emgucv具有Enum、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#中创建一个类型为EmguCv的向量。例如,MNIST数据集有784个输入列,一个输出列有10个分类值。
谢谢
发布于 2019-02-03 00:57:01
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))https://stackoverflow.com/questions/54498181
复制相似问题