【发布时间】:2017-11-08 03:14:45
【问题描述】:
我正在尝试对一些输入进行分类(文本分类:10,000 多个示例和 100,000 多个特征)
而且我读到使用 LibLinear 对于此类任务来说速度更快/内存效率更高,因此,我已将我的 LibSvm 分类器移植到accord/net,如下所示:
//SVM Settings
var teacher = new MulticlassSupportVectorLearning<Linear, Sparse<double>>()
{
//Using LIBLINEAR's L2-loss SVC dual for each SVM
Learner = (p) => new LinearDualCoordinateDescent<Linear, Sparse<double>>()
{
Loss = Loss.L2,
Complexity = 1,
}
};
var inputs = allTerms.Select(t => new Sparse<double>(t.Sentence.Select(s => s.Index).ToArray(), t.Sentence.Select(s => (double)s.Value).ToArray())).ToArray();
var classes = allTerms.Select(t => t.Class).ToArray();
//Train the model
var model = teacher.Learn(inputs, classes);
在.Learn() 处-我得到一个即时OutOfMemoryExcpetion。
我在文档中看到了 CacheSize 设置,但是,我找不到可以降低此设置的位置,如许多示例所示。
一个可能的原因 - 我使用 'Hash trick' 而不是索引 - Accord.Net 是否试图分配一个完整的哈希空间数组? (可能接近 int.MaxValue)如果是这样 - 有没有办法避免这种情况?
非常感谢任何帮助!
【问题讨论】:
-
你能包括完整的例子(要点)吗?
-
请在 Accord.NET 问题跟踪器上打开一个问题,并附上您正在尝试学习的完整示例,包括数据集(如果可能)。
标签: c# machine-learning libsvm accord.net liblinear