问题描述
我正在学习ML.Net,并尝试使用AutoML API并获取空引用异常。问题已通过我的最新知识和最少数量的代码进行了更新。
将此内容放入VSCode中,您也可能会遇到二维矢量爆炸。
class Program
{
static void Main(string[] args)
{
var mlContext = new MLContext();
// create schema for multidimensional vector
var autoSchema = SchemaDeFinition.Create(typeof(InputData));
var col = autoSchema[1];
col.ColumnType = new VectorDataViewType(NumberDataViewType.Single,3,60);
// fabricate some data
var trainingData = new List<InputData>();
var inputData = new InputData();
inputData.MultiDimensional = new float[20,20];
for (int i = 0; i < inputData.MultiDimensional.GetUpperBound(0); i++)
{
for (int j = 0; j < inputData.MultiDimensional.GetUpperBound(1); j++)
{
inputData.MultiDimensional[i,j] = 5; // doesn't matter
}
}
trainingData.Add(inputData);
// setup a data view
IDataView trainingDataView = mlContext.Data.LoadFromEnumerable<InputData>(trainingData,autoSchema);
// preview it (goes BOOM)
var preview = trainingDataView.Preview();
// run the experiment
var settings = new BinaryExperimentSettings();
settings.MaxExperimentTimeInSeconds = 60;
ExperimentResult<BinaryClassificationMetrics> experimentResult = mlContext.Auto()
.CreateBinaryClassificationExperiment(settings)
.Execute(trainingDataView);
}
}
public class InputData
{
public bool Label { get; set; }
public float[,] MultiDimensional { get; set; }
}
要解决我的多维矢量问题,我尝试过:
- 在
float[,]
中删除InputData
初始化程序 - 使用
[VectorType(3,60)]
指定每个属性的确切大小 - 完全不使用
[VectorType]
属性,并使用自动模式对其进行设置。 - 完全不使用
[VectorType]
属性,并且不使用自动模式让ML.net自行解决 - 仅添加
[VectorType()]
,尽管文档说这是针对一维数组的。
我现在的问题是-在ML.Net的AutoML部分中使用大于一维向量的正确方法是什么?这有可能吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)