从加载的 ML.NET 模型中获取标签

Get Labels from loaded ML.NET model

我已经按照 ML.NET 教程进行图像分类,并且已经创建了我的第一个模型。 (https://docs.microsoft.com/en-us/dotnet/machine-learning/tutorials/image-classification)

当我加载保存的模型时,我写了以下内容:

trainedModel = mlContext.Model.Load(modelRelativePath & ModelName, modelSchema)

一旦我 运行 带有图片的模型,它 returns 如果图片是猫或狗。 (使用的标签是“CAT”和“DOG”)

有没有办法从加载的模型中读取整个标签列表?我想在加载模型后显示它。

我已经搜索了 trainedmodel 树,但找不到它们。谢谢

您可以使用以下方法获取当前模型标签作为字符串数组

public string[] GetSlotNames(string name) {
    PredictionEngine<ImageData, ImagePrediction> predictionEngine = mlContext.Model.CreatePredictionEngine<ImageData, ImagePrediction>(mlModel);
    DataViewSchema.Column? column = predictionEngine.OutputSchema.GetColumnOrNull(name);

    VBuffer<ReadOnlyMemory<char>> slotNames = new VBuffer<ReadOnlyMemory<char>>();
    column.Value.GetSlotNames(ref slotNames);
    string[]? names = new string[slotNames.Length];
    int num = 0;

    foreach (var denseValue in slotNames.DenseValues()) {
        names[num++] = denseValue.ToString();
    }

    return names;
}

要使用它,请提供您的 ImagePrediction 模型的 Score 列

string[] labels = GetSlotNames("Score");