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

ML.Net - Cannot load a saved Model

我想在我的应用中使用 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
}

您可能没有添加所需的 Nuget 包。 确保将以下 NuGet 包添加到您的项目中:

Microsoft.ML.HalLearners
Microsoft.ML.LightGBM 

基本上,您遇到这个问题是因为您尝试加载的模型包含一个自定义映射转换器,它在其中一个 NuGet 包中实现,并作为方法扩展在内部访问。当我们找不到 extension/contract 时,我们在上面的 ModelLoadContext.LoadModel 期间抛出异常,说 "Can't find extension 'foo'"。但是有一个问题是 "eaten"(我们的错),它显示了一个错误的异常。

"no clarity" 的这个问题可能会在 ML.NET 0.11 中得到解决。

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

希望对您有所帮助! :)