wekaの訓練を受けたモデルファイルを読み込んで予測を生成しようとしています。しかし、これをしようとすると、java.io.eofexceptionのエラーが発生します。私はこれが私のモデルファイルが正しく形成されていないことに関係していると確信しています。しかし私はwekaツールを使ってモデルファイルを作成し、何が間違っているのか理解していません。wekaの訓練されたモデルファイルを読むときにjava.io.EOFExceptionが発生する
コード
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構造のエラーを除いて機能します。
@weroの49キロバイト:
したがって、単にあなたの
FileInputStream fis
SerializationHelper.read
に渡します。動作するものは36kbだけです – CraZyDroiD問題は、ObjectInputStreamは4バイトだけからなるストリームヘッダーを読み取ることさえできないことです。アクセスの問題? 'fis.read()'を4回実行するとどうなりますか? EOFに達したことを意味する-1も返されますか? – wero
申し訳ありませんが、私にはいくぶん不明です。ここで問題と思われるものは何ですか? – CraZyDroiD