加载模型上的 Java libSVM NullPointerException
Posted
技术标签:
【中文标题】加载模型上的 Java libSVM NullPointerException【英文标题】:Java libSVM NullPointerException on loaded model 【发布时间】:2017-04-20 04:39:53 【问题描述】:我一直在将 libSVM 用于 Java 项目,在对相当大的数据集进行训练后,使用 api 中的函数将模型保存到文件中。后来,我尝试加载文件以进行一些预测,但每次调用 svm.svm_predict 函数时都会收到 NullPointerException。我可以验证该代码是否适用于较小的模型文件,但对于这个较大的集合来说不断失败。以下是完整的错误信息:
Exception in thread "main" java.lang.NullPointerException
at libsvm.Kernel.dot(svm.java:213)
at libsvm.Kernel.k_function(svm.java:232)
at libsvm.svm.svm_predict_values(svm.java:2349)
at libsvm.svm.svm_predict(svm.java:2406)
at com.svm.SVM.predict(...)
at com.svm.SVM.main(...)
奇怪的是,我可以打印出概率并访问 SVM 的其他元素——模型不为空;但是,每当我尝试预测给定向量的结果时,它都会崩溃。有什么想法吗?
【问题讨论】:
【参考方案1】:测试数据必须有向量中每个部分的数据。 IE。 - 如果最大的训练样本对向量有 105 个部分,那么每个测试向量必须有 105 个部分。即使你只有给定测试向量的 15 个部分,你也需要用其他 90 个元素填充它。如果您没有分配适当大小的数组,libSVM 会尝试访问给定的测试数据数组之外的元素以进行预测。
【讨论】:
以上是关于加载模型上的 Java libSVM NullPointerException的主要内容,如果未能解决你的问题,请参考以下文章