2016-06-23 19 views
0

私はtensorflow(python2.7)でニューラルネットワークを使用しており、Javaを使用して出力を取得する必要があります。私はセッションを開始し、値を取得する単純なPython関数getValue(input)を持っています。私はどんな提案にも開放的です。私はJythonがテンソルフローがライブラリにないために動作しないと信じています。私はできるだけ早く呼び出す必要があります。 JNIはJava呼び出しCのために存在するので、cythonで変換してコンパイルしてからJNIを使​​用できますか? RAMや他の方法で情報を渡す方法はありますか?テンソルフローグラフを使用したJava呼び出しPython関数

答えて

0

Pythonでは、(saver.saveを使用して)モデルを保存し、グラフを(tf.train.write_graphを使用して)保存します。

Javaでは、org.bytedeco.javacpp-presetsライブラリを使用して、保存されたprotobufファイルからGraphDefをインスタンス化し、入力フィーチャを渡して、セッション内で出力フィーチャを取得します。

例コードはhttps://medium.com/google-cloud/how-to-invoke-a-trained-tensorflow-model-from-java-programs-27ed5f4f502d#.4su1s26fzを参照してください。

+0

有望に見える - ありがとう。私はこれを見直している。 –

0

私はJava + Python + TensorFlowと同じ問題を抱えています。私は単純なhttpサーバーをセットアップしてしまった。それが遅すぎる場合は、ソケットを直接採用することでオーバーヘッドを少しでも減らすことができます。

+0

提案していただきありがとうございます。これが私が降りる必要のある種類の道なのか疑問に思っていました。 –

-1

はその後script.pyとにTensorFlowのためのあなたの呼び出しをカプセル化:それはあなたのケースを解決

Process proc = Runtime.getRuntime().exec("python script.py"); 

わからないかどうか。

+0

ありがとうパトリック。これは動作しますが、大量のデータがJavaからPythonに渡されなければならないため、非常に非効率です。 –

関連する問題