有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JAVA木卫一。读取weka训练模型文件时的EOFEException

我正在尝试加载我的weka训练模型文件以生成预测。但是我得到了java的一个错误。木卫一。尝试执行此操作时出现EOFEException。我确信这与我的模型文件格式不正确有关。但是我使用了weka工具来创建模型文件,不知道出了什么问题

代码

public Classifier loadModel() throws Exception {
    this.readConfFile();
    Classifier classifier;
    FileInputStream fis = new FileInputStream(
            prop.getProperty("Output_Model_Dir") + "/best3.model");
    ObjectInputStream ois = new ObjectInputStream(fis);

    Log.write.info("Load Classifier Successfully => "
            + prop.getProperty("Output_Model_Dir") + "/best3.model");
    classifier = (Classifier) weka.core.SerializationHelper.read(ois);
    Log.write.info("1");
    ois.close();
    Log.write.fine("Read Classifier Successfully");
    return classifier;
}

日志

INFO: Load Classifier Successfully => C:/Users/CRY$TAL/workspace/flysafews/system_files/best.model
java.io.EOFException
    at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2325)
    at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2794)
    at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:801)
    at java.io.ObjectInputStream.<init>(ObjectInputStream.java:299)
    at weka.core.SerializationHelper.read(SerializationHelper.java:285)
    at flysafe.predict.support.FileHandler.loadModel(FileHandler.java:104)
    at flysafe.predict.core.PredictionManager.predict(PredictionManager.java:189)
    at flysafe.webservice.WebServiceHandler.predictQuery(WebServiceHandler.java:62)

PS:我使用了与此不同的模型文件。使用该文件时,除了arff结构不同的错误外,代码正常工作


共 (1) 个答案

  1. # 1 楼答案

    您将一个ObjectInputStream传递给weka.core.SerializationHelper.read,它只需要一个InputStream,并将该ObjectInputStream包装到另一个ObjectInputStream中,然后失败

    因此,只需将FileInputStream fis传递给SerializationHelper.read

    FileInputStream fis = new FileInputStream(...);            
    classifier = (Classifier) weka.core.SerializationHelper.read(fis);