これはどのJavaオブジェクトにも適用できますが、機械学習、特にlibsvmのコンテキストで尋ねます。私は1つのライブJavaシステムで訓練されたSVMを持っています。この種のオブジェクトの状態を保存し、訓練されたオブジェクトを別のJavaシステムに移動するシステムを取得する方法はありますか?状態(訓練されたLIBSVM)を含むJavaオブジェクトの移植
ありがとうございます。
これはどのJavaオブジェクトにも適用できますが、機械学習、特にlibsvmのコンテキストで尋ねます。私は1つのライブJavaシステムで訓練されたSVMを持っています。この種のオブジェクトの状態を保存し、訓練されたオブジェクトを別のJavaシステムに移動するシステムを取得する方法はありますか?状態(訓練されたLIBSVM)を含むJavaオブジェクトの移植
ありがとうございます。
はい、いくつかの方法があります。あなたがObjectInputStream
を使用model
を、デシリアライズするには
import java.io.*;
public class SerializeSVMModel {
public static void main(String [] args) {
// Set up your SVM model
svm_model model = svm_train(...);
// ...
try {
FileOutputStream fileOutputStream = new FileOutputStream("c:/svm/serialized_svm_model.ser");
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
// Writes the object
objectOutputStream .writeObject(model);
} catch(IOException e) {
e.printStackTrace();
} finally {
if (objectOutputStream != null) {
objectOutputStream.close();
}
}
}
}
:最も簡単にはObjectOutputStream
と、このような訓練を受けたsvm_model
をシリアル化することです。
別の方法は、Java Architecture for XML Binding (JAXB)を使用することです。この場合、svm_model
のフィールドにアクセスできるようにラッパークラスを作成する必要があります。これは、アノテーションをマークする必要があるためです。人間が読めるXML出力ファイルやその他のカスタム形式があるため、このアプローチは優れています。しかし、これ以上の読み方が必要です。
私は確信していませんが、それはあなたが話しているオブジェクトのシリアル化ですか?もしそうなら、 https://docs.oracle.com/javase/tutorial/jndi/objects/serial.htmlをご覧ください。 – MGoksu