在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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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