我正在使用Microsoft's ML.net library.
我想基于在运行时生成合同的模型来训练数据(这意味着在编译时不知道字段)。可以使用当前ML.net的Train()方法siganture实现吗?
到目前为止,我试图通过传入TInput和TOutput对象的实例(而不是T类)来调用此Train方法。
最佳答案
根据文档,LearningPipeline
只有一种方法Train<TIn, TOut>
用于训练,这意味着TIn
和TOut
是实际的类:TIn
是预测的输入,而TOut
是输出。
底层的ML.NET代码实际上并不依赖于提前了解架构:Train<TIn, TOut>
方法是我们决定向用户公开的一种便捷方法。该决定的副作用是,我们基本上禁止了像您这样的用例。
当然,当您知道数据的架构时,仍然可以在运行时使用Reflection生成类签名,但这是一个尴尬的解决方法。
我们正在使用的新ML.NET API(请参见this project中的问题)将解除此要求:您将能够训练在编译时未知的数据。