我正在使用Microsoft's ML.net library.

我想基于在运行时生成合同的模型来训练数据(这意味着在编译时不知道字段)。可以使用当前ML.net的Train()方法siganture实现吗?

到目前为止,我试图通过传入TInput和TOutput对象的实例(而不是T类)来调用此Train方法。

最佳答案

根据文档,LearningPipeline只有一种方法Train<TIn, TOut>用于训练,这意味着TInTOut是实际的类:TIn是预测的输入,而TOut是输出。

底层的ML.NET代码实际上并不依赖于提前了解架构:Train<TIn, TOut>方法是我们决定向用户公开的一种便捷方法。该决定的副作用是,我们基本上禁止了像您这样的用例。

当然,当您知道数据的架构时,仍然可以在运行时使用Reflection生成类签名,但这是一个尴尬的解决方法。

我们正在使用的新ML.NET API(请参见this project中的问题)将解除此要求:您将能够训练在编译时未知的数据。

07-26 08:50