ML.Net-无法加载已保存的模型

时间:2019-02-11 16:41:54

标签: c# machine-learning ml.net

我想在我的应用中使用ML.Net重新加载经过训练的模型,而不必重新进行训练。

培训并保存起来看起来不错。创建zip文件并填充。

但是当我尝试从FileStream重新加载它时,我收到了System.InvalidOperationException并显示消息Repository doesn't contain entry DataLoaderModel\Model.key

我的代码与在Machine Learning Examples上找到的代码非常相似

var p = @"C:\Users\{UserName}\Desktop\model.zip";
if (this._mlContext == null)
this._mlContext = new MLContext();

ITransformer model;
try
{
    using (var stream = File.OpenRead(p))
    model = this._mlContext.Model.Load(stream);
}
catch (Exception)
{
    throw; // Invalid Operation Exception
}

1 个答案:

答案 0 :(得分:0)

您可能缺少添加所需的Nuget程序包。 确保将以下NuGet软件包添加到项目中:

Microsoft.ML.HalLearners
Microsoft.ML.LightGBM 

基本上,您遇到了这个问题,因为要加载的模型包含一个自定义映射转换器,该转换器在这些NuGet包之一中实现,并在内部作为方法扩展进行访问。当我们找不到该扩展名/合同时,我们在ModelLoadContext.LoadModel期间抛出一个异常,说“找不到扩展名'foo'”。但是有一个问题是该异常被“吃掉了”(我们的错),并且显示了一个错误的异常。

对于ML.NET 0.11,此异常的“不清楚”问题可能会得到解决。

但是,如果您添加了这些NuGet程序包(或所需的NuGet程序包,请与您的训练模型应用程序进行比较),它应该可以工作。

希望有帮助! :)

相关问题