【问题标题】:How to deserialize saved model in Weka-for-Android如何在 Weka-for-Android 中反序列化保存的模型
【发布时间】:2023-03-06 03:36:01
【问题描述】:

我在从 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

【问题讨论】:

    标签: android weka random-forest


    【解决方案1】:
            InputStream is = this.getAssets().open("example.model");
            ObjectInputStream ois = new ObjectInputStream(is);
            cls = (Classifier) ois.readObject();
            ois.close();
    

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

    【讨论】:

    • 感谢亨利的回复 :) 问题不在于我是否找到模型文件,我认为问题在于将 ios.readObect 转换为 RandomForest。我尝试将其放入资产中,但没有任何改变。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2019-02-24
      • 1970-01-01
      相关资源
      最近更新 更多