TensorFlow : Install : TensorFlow for Java をインストールする (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 04/29/2017
* 本ページは、TensorFlow の本家サイトの Install – Installing TensorFlow for Java を翻訳した上で
適宜、補足説明したものです:
https://www.tensorflow.org/install/install_java
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
TensorFlow は Java プログラムでの使用のための API を提供しています。これらの API は特に Python で作成されたモデルをロードしたりそれらを Java アプリケーションで実行することに適合しています。このガイドはどのように TensorFlow for Java をインストールしてそれを Java アプリケーションで使用するかについて説明します。
警告 : TensorFlow Java API は TensorFlow API stability guarantees でカバーされていません。
サポートされるプラットフォーム
TensorFlow for Java は次のオペレーティング・システム上でサポートされます :
- Linux
- Mac OS X
- Windows
- Android
Android のためのインストール指示は別の Android TensorFlow Support page にあります。インストール後は TensorFlow on Android のこの complete example を見てください。
Maven プロジェクトで TensorFlow を使用する
貴方のプロジェクトが Apache Maven を使用しているならば、TensorFlow Java API を使用するには次をプロジェクトの pom.xml に追加します :
org.tensorflow tensorflow 1.1.0
That’s all.
サンプル
例として、これらのステップは TensorFlow を使用する Maven プロジェクトを作成します :
- プロジェクトの pom.xml を作成します :
4.0.0 org.myorg label-image 1.0-SNAPSHOT HelloTF 1.7 1.7 org.tensorflow tensorflow 1.1.0 - ソースファイル (src/main/java/HelloTF.java) を作成します :
import org.tensorflow.Graph; import org.tensorflow.Session; import org.tensorflow.Tensor; import org.tensorflow.TensorFlow; public class HelloTF { public static void main(String[] args) throws Exception { try (Graph g = new Graph()) { final String value = "Hello from " + TensorFlow.version(); // Construct the computation graph with a single operation, a constant // named "MyConst" with a value "value". try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) { // The Java API doesn't yet include convenience functions for adding operations. g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build(); } // Execute the "MyConst" operation in a Session. try (Session s = new Session(g); Tensor output = s.runner().fetch("MyConst").run().get(0)) { System.out.println(new String(output.bytesValue(), "UTF-8")); } } } }
- コンパイルして実行します :
# Use -q to hide logging from the mvn tool mvn -q compile exec:java
(訳注 : 以下は実行結果です)
$ mvn -q compile exec:java Hello from 1.1.0
先のコマンドは Hello from version を出力するはずです。もしそうであれば、貴方は TensorFlow for Java を成功的にセットアップしてそれを Maven プロジェクトで使用する準備ができています。そうでないならば、 可能な解法のために Stack Overflow をチェックしてください。このドキュメントの残りを読むのはスキップして良いです。(訳注: Maven 推奨という意味でしょう。)
TensorFlow を JDK で使用する
このセクションは JDK インストールから java と javac コマンドを使用してどのように TensorFlow を利用するかについて記述します。貴方のプロジェクトが Apache Maven を利用するならば、代わりに上記のより単純な指示を参照してください。
Linux または Mac OS 上のインストール
Linux か Mac OS 上で TensorFlow for Java をインストールするためには次のステップを取ります :
- libtensorflow.jar をダウンロードします、これは TensorFlow Java Archive (JAR) です。
- TensorFlow for Java を CPU(s) 上のみか GPU(s) の援助の上で実行するかを決めます。決定を助けるためには、次のガイドの一つの “Determine which TensorFlow to install” というタイトルのセクションを読んでください :
- 次のシェル・コマンドを実行して貴方のオペレーティング・システムとプロセッサ・サポートのための適切な Java Native Interface (JNI) ファイルをダウンロードして extract します :
TF_TYPE="cpu" # Default processor is CPU. If you want GPU, set to "gpu" OS=$(uname -s | tr '[:upper:]' '[:lower:]') mkdir -p ./jni curl -L "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-${TF_TYPE}-${OS}-x86_64-1.1.0.tar.gz" | tar -xz -C ./jni
Windows 上のインストール
Windows 上で TensorFlow for Java をインストールするためには次のステップを取ります :
- libtensorflow.jar をダウンロードします、これは TensorFlow Java Archive (JAR) です。
- TensorFlow for Java on Windows のための適切な Java Native Interface (JNI) ファイルをダウンロードします。
- この .zip ファイルを extract します。
インストールを検証する
TensorFlow for Java をインストールした後、HelloTF.java という名前のファイルに次のコードを入力してインストールを検証します :
import org.tensorflow.Graph; import org.tensorflow.Session; import org.tensorflow.Tensor; import org.tensorflow.TensorFlow; public class HelloTF { public static void main(String[] args) throws Exception { try (Graph g = new Graph()) { final String value = "Hello from " + TensorFlow.version(); // Construct the computation graph with a single operation, a constant // named "MyConst" with a value "value". try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) { // The Java API doesn't yet include convenience functions for adding operations. g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build(); } // Execute the "MyConst" operation in a Session. try (Session s = new Session(g); Tensor output = s.runner().fetch("MyConst").run().get(0)) { System.out.println(new String(output.bytesValue(), "UTF-8")); } } } }
そして下の指示を使用して HelloTF.java をコンパイルして実行します。
コンパイリング
TensorFlow を使用する Java プログラムをコンパイルする時は、ダウンロードされた .jar が classpath の一部でなければなりません。例えば、次のように -cp コンピレーション・フラグを使用することで classpath にダウンロードした .jar を含めることができます :
javac -cp libtensorflow-1.1.0.jar HelloTF.java
実行する
TensorFlow に依存する Java プログラムを実行するために、次の2つのファイルが JVM に対して利用可能であることを確かなものとします :
- ダウンロードされた .jar ファイル
- extract された JNI ライブラリ
例えば、次のコマンドは HelloTF プログラムを実行します :
java -cp libtensorflow-1.1.0.jar:. -Djava.library.path=./jni HelloTF
(訳注: 以下は実行結果です)
$ java -cp libtensorflow-1.1.0.jar:. -Djava.library.path=./jni HelloTF Hello from 1.1.0
プログラムが Hello from version を出力すれば、貴方は TensorFlow for Java の成功的にセットアップして API を使用する準備ができています。もしプログラムが何か別のものを出力する場合は、可能な解法のために Stack Overflow をチェックしてください。
上級サンプル
より洗練されたサンプルのためには、LabelImage.java を見てください、これは画像の物体を認識します。
ソースコードからビルドする
TensorFlow はオープンソースです。別の文書 の指示に従えば TensorFlow ソースコードから TensorFlow for Java をビルドできます。
以上