我不知道如何在 Unity 中使用 ML.NET。
我做了什么:将我的项目转换为与框架 4.x 兼容。将 api 兼容级别转换为框架 4.x。制作 assets/plugins/ml 文件夹并放入带有相应 xml 的 Microsoft.ML api。将所有 ml.dlls 平台设置标记为仅兼容 86_64(这是多余的)。
我现在可以:调用 ML api 并创建 MlContext、TextLoader,并进行模型的训练。当一个模型被训练时,我也可以评估训练后的模型,但是......
我不能:当试图从模型中得到预测时,我得到一个错误: github comment on issue from 28.12.18(那里还有一个完整的项目,你可以在那里看到代码)相同的代码在 Visual Studio 中工作解决方案。
public float TestSinglePrediction(List<double> signal, MLContext mlContext, string modelPath)
{
ITransformer loadedModel;
using (var stream = new FileStream(modelPath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
loadedModel = mlContext.Model.Load(stream);
}
var predictionFunction = loadedModel.MakePredictionFunction<AbstractSignal, PredictedRfd>(mlContext);
var abstractSignal = new AbstractSignal()
{
Sig1 = (float)signal[0],
Sig2 = (float)signal[1],
Sig3 = (float)signal[2],
Sig4 = (float)signal[3],
Sig5 = (float)signal[4],
Sig6 = (float)signal[5],
Sig7 = (float)signal[6],
Sig8 = (float)signal[7],
Sig9 = (float)signal[8],
Sig10 = (float)signal[9],
Sig11 = (float)signal[10],
Sig12 = (float)signal[11],
Sig13 = (float)signal[12],
Sig14 = (float)signal[13],
Sig15 = (float)signal[14],
Sig16 = (float)signal[15],
Sig17 = (float)signal[16],
Sig18 = (float)signal[17],
Sig19 = (float)signal[18],
Sig20 = (float)signal[19],
RfdX = 0
};
var prediction = predictionFunction.Predict(abstractSignal);
return prediction.RfdX;
}
这是返回错误行的方法:
var predictionFunction = loadedModel.MakePredictionFunction<AbstractSignal, PredictedRfd>(mlContext);