从加载的 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");
我已经按照 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");