ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

如何在serialVersionUID发生变化后在java中加载libsvm模型

2019-06-29 03:47:47  阅读:279  来源: 互联网

标签:java serialization weka libsvm serialversionuid


我在weka上训练了libsvm模型,然后我保存了模型.现在我想在java中使用这个模型.

Classifier cls = (Classifier)weka.core.SerializationHelper.read(this.modelPath);

我收到这个错误

“java.io.InvalidClassException: libsvm.svm_model; local class
incompatible: stream classdesc serialVersionUID =
-8642637231196646922, local class serialVersionUID = 2709444323471798245”

当我运行上面的代码.我想知道如何加载和使用模型.

解决方法:

您可能在保存模型的时间和尝试加载模型的时间之间更改了类定义(例如,请参阅What is a serialVersionUID and why should I use it?以获得详细说明).将serialVersionUID视为一种校验和,确保您不会加载过时的类版本.除非那是你想要的,因为你比Java更了解你仍然可以使用旧模型 – 在这种情况下你可以手动设置该ID.为了告诉Java您当前的分类器仍然是最新的,请添加

static final long serialVersionUID = -8642637231196646922;

到班级的代码.

现在我想知道:分类器看起来像Weka内置类.我不确定在这种情况下可以轻松更改serialVersionUID.你有没有更新Weka版本?如果你真的投资了你的模型文件,你可能想进入Weka的源代码并在那里更改serialVersionUID.

标签:java,serialization,weka,libsvm,serialversionuid
来源: https://codeday.me/bug/20190629/1322533.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有