首页 > 解决方案 > 具有复杂对象的 ML.NET LoadFromEnumerable

问题描述

我想IDataView从复杂的对象创建一个。

假设我的对象将是这些简单的类:

class Foo
{
    public Bar bar { get; set; }
}

class Bar
{
    public int num { get; set; }
}

(当然,在我的代码中有更多的字段Foo,其中一些是对象或集合)。

现在我尝试加载Foos的集合DataOperationsCatalog.LoadFromEnumerable

var mlContext = new MLContext();
var foos = new List<Foo>
{
    new Foo
    {
        bar = new Bar {num = 5}
    }, 
    new Foo
    {
        bar = new Bar {num = 5}
    }
}.AsEnumerable();
var dataview = mlContext.Data.LoadFromEnumerable(foos);

我得到了错误:

System.ArgumentOutOfRangeException:无法确定成员的 IDataView 类型 参数名称:rawType

即使我将Bar对象注册为DataViewType,也没有什么好转的:

DataViewTypeManager.Register(NumberDataViewType.Int32, typeof(Bar));

标签: c#ml.net

解决方案


推荐阅读