blob: bc4d491ad2761abfa6a7a95776f21a93eed4a3e0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
# TensorFlow for Java
Java bindings for TensorFlow.
> *WARNING*: The TensorFlow Java API is incomplete and experimental and can
> change without notice. Progress can be followed in
> [issue #5](https://github.com/tensorflow/tensorflow/issues/5).
>
> Till then, for using TensorFlow on Android refer to
> [contrib/android](https://www.tensorflow.org/code/tensorflow/contrib/android),
> [makefile](https://www.tensorflow.org/code/tensorflow/contrib/makefile#android)
> and/or the [Android camera
> demo](https://www.tensorflow.org/code/tensorflow/examples/android).
## Requirements
- [bazel](https://www.bazel.build/versions/master/docs/install.html)
- Environment to build TensorFlow from source code
([Linux](https://www.tensorflow.org/versions/master/get_started/os_setup.html#prepare-environment-for-linux)
or [Mac OS
X](https://www.tensorflow.org/versions/master/get_started/os_setup.html#prepare-environment-for-mac-os-x)).
If you'd like to skip reading those details and do not care about GPU
support, try the following:
```sh
# On Linux
sudo apt-get install python swig python-numpy
# On Mac OS X with homebrew
brew install swig
```
## Installation
Configure and build the Java Archive (JAR) and native library:
```sh
# Configure the build (e.g. GPU support etc.), as per
# https://www.tensorflow.org/get_started/os_setup#configure_the_installation
./configure
# Build the JAR and native library
bazel build --config opt \
//tensorflow/java:tensorflow \
//tensorflow/java:libtensorflow_jni
```
### Maven
To use the library in an external Java project, publish the library to a Maven
repository. For example, publish the library to the local Maven repository
using the `mvn` tool (installed separately):
```sh
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
```
Refer to the library using Maven coordinates. For example, if you're using
Maven then place this dependency into your `pom.xml` file (replacing
0.12.head with the version of the TensorFlow runtime you wish to use).
```xml
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>libtensorflow</artifactId>
<version>0.12.head</version>
</dependency>
```
## Example
### With bazel
Add a dependency on `//tensorflow/java:tensorflow` to the `java_binary` or
`java_library` rule. For example:
```sh
bazel run -c opt //tensorflow/java/src/main/java/org/tensorflow/examples:label_image
```
### With `javac`
- Add `libtensorflow.jar` to classpath for compilation. For example:
```sh
javac \
-cp ../../bazel-bin/tensorflow/java/libtensorflow.jar \
./src/main/java/org/tensorflow/examples/LabelImage.java
```
- Make `libtensorflow.jar` and `libtensorflow_jni.so`
(`libtensorflow_jni.dylib` on OS X) available during execution. For example:
```sh
java \
-Djava.library.path=../../bazel-bin/tensorflow/java \
-cp ../../bazel-bin/tensorflow/java/libtensorflow.jar:./src/main/java \
org.tensorflow.examples.LabelImage
```
|