在Android上序列化训练有素的模型

时间:2013-06-14 03:34:12

标签: weka

我在Android上序列化经过训练的多层感知器模型时遇到问题。我正在使用WekaSTRIPPED.jar(WEKA-for-Android)

我的代码是:

Classifier cModel = new MultilayerPerceptron(); 
        try {
            cModel.buildClassifier(trainFile);
            weka.core.SerializationHelper.write(Directory + "/FourFModels/MLP.model", cModel);
            Log.e("MLP model", "created");
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 

我得到的错误:

06-14 12:23:48.776: E/AndroidRuntime(336): FATAL EXCEPTION: main
06-14 12:23:48.776: E/AndroidRuntime(336): java.lang.IllegalStateException: Could not execute method of the activity
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.view.View$1.onClick(View.java:3599)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.view.View.performClick(View.java:4204)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.view.View$PerformClick.run(View.java:17355)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.os.Handler.handleCallback(Handler.java:725)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.os.Handler.dispatchMessage(Handler.java:92)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.os.Looper.loop(Looper.java:137)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.app.ActivityThread.main(ActivityThread.java:5041)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.lang.reflect.Method.invokeNative(Native Method)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.lang.reflect.Method.invoke(Method.java:511)
06-14 12:23:48.776: E/AndroidRuntime(336):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
06-14 12:23:48.776: E/AndroidRuntime(336):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
06-14 12:23:48.776: E/AndroidRuntime(336):  at dalvik.system.NativeStart.main(Native Method)
06-14 12:23:48.776: E/AndroidRuntime(336): Caused by: java.lang.reflect.InvocationTargetException
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.lang.reflect.Method.invokeNative(Native Method)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.lang.reflect.Method.invoke(Method.java:511)
06-14 12:23:48.776: E/AndroidRuntime(336):  at android.view.View$1.onClick(View.java:3594)
06-14 12:23:48.776: E/AndroidRuntime(336):  ... 11 more
06-14 12:23:48.776: E/AndroidRuntime(336): Caused by: java.lang.StackOverflowError
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.SerializationHandleMap.get(SerializationHandleMap.java:63)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.dumpCycle(ObjectOutputStream.java:425)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeClassDesc(ObjectOutputStream.java:754)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeNewArray(ObjectOutputStream.java:1134)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1662)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
06-14 12:23:48.776: E/AndroidRuntime(336):  at java.io.ObjectOutputStream.writeNewArray(ObjectOutputStream.java:1205)

非常感谢任何帮助。

0 个答案:

没有答案