【发布时间】:2019-11-09 10:41:42
【问题描述】:
我想确定哪个分数与哪个标签相关,但出现运行时错误。
我有一个方法负责...
public static List<string> GetSlotNames(string name)
{
var schema = predEngine.OutputSchema;
var column = schema.GetColumnOrNull(name);
var slotNames = new VBuffer<ReadOnlyMemory<char>>();
column.Value.GetSlotNames(ref slotNames); //here is the error
var names = new string[slotNames.Length];
var num = 0;
foreach (var denseValue in slotNames.DenseValues())
{
names[num++] = denseValue.ToString();
}
return names.ToList();
}
但我得到一个运行时异常:
System.InvalidOperationException:'对'GetValue'的无效调用'
编辑:我用模型构建器训练了模型,所以代码是 ml.net 使用的标准代码,在我的例子中是三类分类。GetSlotNames 的参数是“分数”
public class ModelOutput
{
[ColumnName("PredictedLabel")]
public Single Prediction { get; set; }
[ColumnName("Score")]
public float[] Score { get; set; }
}
【问题讨论】:
-
提供的代码看起来没有任何异常。我的猜测是,预测引擎的输出模式可能与您的预期不同。如果您可以发布用于训练模型的代码、实例化
predEngine以及您正在使用哪个name调用此方法,将会有所帮助。