1

我在从 sdcard 加载保存的模型时遇到问题。在 Weka 的官方 wiki 中,我发现了 2 种反序列化模型的方法,但它们都不适用于 Android。

//First Method
RandomForest rf = (RandomForest) weka.core.SerializationHelper.
    read(Environment.getExternalStorageDirectory().getPath() + "/BC.model");

//Second Method
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
    Environment.getExternalStorageDirectory().getPath() + "/BC.model"));
RandomForest rf = new RandomForest();
rf = (RandomForest) ois.readObject();

我在 logcat 中收到此错误:

java.io.InvalidClassException: 
    weka.classifiers.trees.RandomForest; Incompatible class (SUID): 
    weka.classifiers.trees.RandomForest
4

2 回答 2

1

在android中,您只能加载由您的android APP序列化的分类器模型。否则,由于不兼容的 Serializable UID,您将收到异常。

于 2014-05-06T21:10:18.300 回答
0
        InputStream is = this.getAssets().open("example.model");
        ObjectInputStream ois = new ObjectInputStream(is);
        cls = (Classifier) ois.readObject();
        ois.close();

您可能希望将模型放在资产文件夹中。请让我知道它是否有效。

于 2013-05-20T02:07:08.397 回答