TensorFlow提供用于Java程序的API。这些API非常适合于加载在Python中创建的模型并在Java应用程序中执行。本指南说明如何安装TensorFlow for Java并在Java应用程序中使用它。
警告:TensorFlow Java API目前没有TensorFlowAPI稳定性保证。
以下操作系统支持TensorFlow for Java:
- Linux
- Mac OS X
- Windows
- Android的
Android的安装说明在单独的文档中:Android TensorFlow支持页面。安装完成后请看这个TensorFlow在Android上使用的完整的例子的。
在Maven项目中使用TensorFlow
如果您的项目使用Apache Maven,需要将以下内容添加到项目中pom.xml
,才能使用TensorFlow Java API:
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>1.3.0</version>
</dependency>
示例
以下步骤将创建一个使用TensorFlow的Maven项目:
-
创建项目的pom.xml
:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.myorg</groupId>
<artifactId>hellotf</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<exec.mainClass>HelloTF</exec.mainClass>
<!-- The sample code requires at least JDK 1.7. -->
<!-- The maven compiler plugin defaults to a lower version -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
</project>
-
创建源文件(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
上述命令输出Hello from 版本
。如果没有,请检查Stack Overflow寻找可能的解决方案。
如果只使用Maven开发,您可以跳过阅读本文档剩余的部分。
在JDK中使用TensorFlowK
本节介绍如何基于来自己JDK的命令java
和javac
来使用TensorFlow。如果您的项目使用Apache Maven,那么请参考上面更简单的说明。
在Linux或Mac OS上安装
采取以下步骤在Linux或Mac OS上安装TensorFlow for Java:
-
下载libtensorflow.jar,它是TensorFlow Java Archive(JAR)。
-
选择要不要GPU支持。如何选择?请阅读以下指南中的“确定要安装的TensorFlow”的部分。
-
通过运行以下shell命令,为您的操作系统和处理器下载并提取适当的Java Native Interface(JNI)文件:
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.3.0.tar.gz" |
tar -xz -C ./jni
在Windows上安装
采取以下步骤在Windows上安装TensorFlow for Java:
- 下载libtensorflow.jar,它是TensorFlow Java Archive(JAR)。
- 下载适合的Java Native Interface(JNI)文件Windows的TensorFlow for Java。
- 解压缩此.zip文件。
验证安装
安装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
编译标志将下载的.jar
指定到classpath
,如下:
javac -cp libtensorflow-1.3.0.jar HelloTF.java
运行
要执行依赖于TensorFlow的Java程序,请确保以下两个文件可用于JVM:
例如,在Linux和Mac OS X上以下命令行运行HelloTF
程序:
java -cp libtensorflow-1.3.0.jar:. -Djava.library.path=./jni HelloTF
在Windows上执行以下命令行运行HelloTF
的程序:
java -cp libtensorflow-1.3.0.jar;. -Djava.library.path=jni HelloTF
上述命令输出Hello from 版本
。如果程序输出其他内容,请检查Stack Overflow寻找可能的解决方案
高级示例
有关更复杂的例子,请参阅LabelImage.java,这个例子用于图像中实体检测。
从源代码构建
TensorFlow是开源的,所以可以从TensorFlow源代码中构建TensorFlow for Java,方法见文档Tensorflor JAVA安装。