在Android中读取Weka模型时出现错误

我在计算机上创建了Weka模型,并将其导入到Android项目中。当我尝试创建分类器时,尝试反序列化我创建的模型时,出现了“exception.java.io.StreamCorruptedException”错误。在计算机上运行代码时一切正常。

这是我的代码,

InputStream fis = null;        fis = new InputStream("/modle.model");        InputStream is = fis;        Classifier cls = null;       //在这里尝试读取分类器时出现错误            cls = (Classifier) SerializationHelper.read(is);        FileInputStream datais = null;            datais = new FileInputStream("/storage/emulated/0/window.arff");        InputStream dataIns = datais;        DataSource source = new DataSource(dataIns);        Instances data = null;        try {            data = source.getDataSet();        } catch (Exception e) {            e.printStackTrace();        }        data.setClassIndex(data.numAttributes() - 1);        Instance in = new Instance(13);        in.setDataset(data);        in.setValue(0, testWekaModle1[0]);        in.setValue(1, testWekaModle1[1]);        in.setValue(2, testWekaModle1[2]);        in.setValue(3, testWekaModle1[3]);        in.setValue(4, testWekaModle1[4]);        in.setValue(5, testWekaModle1[5]);        in.setValue(6, testWekaModle1[6]);        in.setValue(7, testWekaModle1[7]);        in.setValue(8, testWekaModle1[8]);        in.setValue(9, testWekaModle1[9]);        in.setValue(10, testWekaModle1[10]);        in.setValue(11, testWekaModle1[11]);        double value = 0;            value = cls.classifyInstance(in);        in.setClassValue(value);

这是完整的堆栈跟踪,

java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:2109)java.io.ObjectInputStream.<init>(ObjectInputStream.java:372)weka.core.SerializationHelper.read(SerializationHelper.java:288)info.androidhive.sleepApp.model.ControllerWeka.wekaModle(ControllerWeka.java:81)info.androidhive.sleepApp.activity.HomeFragment.extract(HomeFragment.java:278)info.androidhive.sleepApp.activity.HomeFragment.stop(HomeFragment.java:146)"info.androidhive.sleepApp.activity.HomeFragment$2.onClick(HomeFragment.java:107)"android.view.View.performClick(View.java:4475)"android.view.View$PerformClick.run(View.java:18786)"android.os.Handler.handleCallback(Handler.java:730)"dalvik.system.NativeStart.main(Native Method)"com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025)"com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209)"java.lang.reflect.Method.invoke(Method.java:525)"java.lang.reflect.Method.invokeNative(Native Method)"android.app.ActivityThread.main(ActivityThread.java:5419)"android.os.Looper.loop(Looper.java:137)"android.os.Handler.dispatchMessage(Handler.java:92)"

请帮助我解决这个问题。


回答:

问题已解决,模型是在不同的环境(PC)中创建的,并尝试在Android环境中反序列化,由于两种JDK类型完全不同而导致错误。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注