TensorFlow提供用于Java程序的API。这些API特别适合加载使用Python创建的模型,并在Java应用程序中执行它们。本指南介绍如何安装 TensorFlow for Java 并将其用于Java应用程序。
警告: TensorFlow API API 不在 TensorFlow API稳定性保证范围内。
支持的平台
以下操作系统支持TensorFlow for Java:
- Linux
- Mac OS X
- Windows
- Android
Android的安装说明在一个单独的 Android TensorFlow支持页面。安装完成后,请参阅 Android上的TensorFlow的完整示例。
使用TensorFlow与Maven项目
如果您的项目使用Apache Maven,则将以下内容添加到项目中pom.xml
以使用TensorFlow Java API:
<dependency> <groupId>org.tensorflow</groupId> <artifactId>tensorflow</artifactId> <version>1.1.0</version> </dependency>
就这样。
例
例如,这些步骤将创建一个使用TensorFlow的Maven项目:
创建项目的
pom.xml
:<project> <modelVersion>4.0.0</modelVersion> <groupId>org.myorg</groupId> <artifactId>label-image</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.1.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")); } } } }
编译执行:
#使用-q从mvn工具中隐藏日志记录 mvn -q compile exec:java
前面的命令应该从版本输出Hello。如果这样做,您已经成功地设置了TensorFlow for Java,并准备在Maven项目中使用它。如果没有,请检查 堆栈溢出 可能的解决方案。您可以跳过阅读本文档的其余部分。
使用TensorFlow与JDK
本节介绍如何使用TensorFlow java
和javac
JDK安装中的命令。如果您的项目使用Apache Maven,那么请参考上面更简单的说明。
在Linux或Mac OS上安装
采取以下步骤在Linux或Mac OS上安装TensorFlow for Java:
下载 libtensorflow.jar,它是TensorFlow Java Archive(JAR)。
决定是否在CPU上运行TensorFlow for Java或者在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.1.0.tar.gz" | tar -xz -C ./jni
在Windows上安装
请执行以下步骤在Windows上安装TensorFlow for Java:
- 下载 libtensorflow.jar,它是TensorFlow Java Archive(JAR)。
- 在Windows上下载适合于TensorFlow for Java的以下Java Native Interface(JNI)文件 。
- 解压缩此.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
。例如,您可以通过使用编译标志将下载.jar
到您classpath
的内容中-cp
,如下所示:
javac -cp libtensorflow-1.1.0.jar HelloTF.java
运行
要执行依赖于TensorFlow的Java程序,请确保以下两个文件可用于JVM:
- 下载的
.jar
文件 - 提取的JNI库
例如,以下命令行执行HelloTF
程序:
java -cp libtensorflow-1.1.0.jar:. -Djava.library.path=./jni HelloTF
如果程序从版本中输出Hello,那么您已经成功安装了TensorFlow for Java并准备好使用API。如果程序输出其他内容,请检查 堆栈溢出 以获得可能的解决方案。
高级示例
有关更复杂的示例,请参阅 LabelImage.java,它识别图像中的对象。