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