TensorFlow for Java
WARNING: The TensorFlow Java API is not currently covered by the TensorFlow API stability guarantees.
Releases built from release branches are available on Maven Central.
Additionally, every day binaries are built from the
master branch on GitHub:
Building from source
If the quickstart instructions above do not work out, the TensorFlow Java and native libraries will need to be built from source.
Setup the environment to build TensorFlow from source code (Linux or macOS). If you'd like to skip reading those details and do not care about GPU support, try the following:
# On Linux sudo apt-get install python swig python-numpy # On Mac OS X with homebrew brew install swig
Configure (e.g., enable GPU support) and build:
./configure bazel build --config opt \ //tensorflow/java:tensorflow \ //tensorflow/java:libtensorflow_jni
The command above will produce two files in the
- An archive of Java classes:
- A native library:
libtensorflow_jni.dylibon OS X, or
To compile Java code that uses the TensorFlow Java API, include
libtensorflow.jar in the classpath. For example:
javac -cp bazel-bin/tensorflow/java/libtensorflow.jar ...
To execute the compiled program, include
libtensorflow.jar in the classpath
and the native library in the library path. For example:
java -cp bazel-bin/tensorflow/java/libtensorflow.jar \ -Djava.library.path=bazel-bin/tensorflow/java \ ...
Installation on Windows requires the more experimental bazel on
Windows. Details are
omitted here, but find inspiration in the script used for building the release
Details of the release process for Maven Central are in
However, for development, you can push the library built from source to a local
Maven repository with:
bazel build -c opt //tensorflow/java:pom mvn install:install-file \ -Dfile=../../bazel-bin/tensorflow/java/libtensorflow.jar \ -DpomFile=../../bazel-bin/tensorflow/java/pom.xml
And then refer to this library in a project's
pom.xml with: (replacing
VERSION with the appropriate version of TensorFlow):
<dependency> <groupId>org.tensorflow</groupId> <artifactId>libtensorflow</artifactId> <version>VERSION</version> </dependency>
If your project uses bazel for builds, add a dependency on
//tensorflow/java:tensorflow to the
java_library rule. For
bazel run -c opt //tensorflow/java/src/main/java/org/tensorflow/examples:label_image