本文出自 掘金翻译计划 正在组织翻译的 TensorFlow 官方文档。若是您有兴趣,欢迎 申请成为译者,学习完译者教程后,参与到文章和文档的翻译和及对当中。咱们也正在招募 TensorFlow 译者,欢迎积极参加。前端
TensorFlow 为 Java 程序提供了 API 。这些 API 是在 Java 应用中专门用来加载和执行 Python 建立的模型的。这个教程解释了如何安装并在应用中使用 TensorFlow for Java 。java
警告: TensorFlow 的 Java API 不 包含在 TensorFlow 中。 API 稳定性保证linux
TensorFlow for Java 支持在如下操做系统中运行:android
Android 上的安装说明在单独的 Android TensorFlow 支持页 中。在安装完成后,请查看这个 Android 上 TensorFlow 的 完整示例。ios
若是你的项目使用了 Apache Maven,为了使用 TensorFlow Java API , 在项目的 pom.xml
中加入如下内容便可:git
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>1.4.0-rc0</version>
</dependency>
复制代码
例如,这些步骤将建立一个使用 TensorFlow 的 Maven 项目:github
建立项目的 pom.xml
:shell
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.myorg</groupId>
<artifactId>hellotf</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<exec.mainClass>HelloTF</exec.mainClass>
<!-- 这个样例代码至少须要 JDK 1.7 。 -->
<!-- maven 编译器插件默认为一个更低的版本 -->
<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.4.0-rc0</version>
</dependency>
</dependencies>
</project>
复制代码
建立源文件(src/main/java/HelloTF.java
):apache
import org.tensorflow.Graph; import org.tensorflow.Session; import org.tensorflow.Tensor; import org.tensorflow.TensorFlow;c#
public class HelloTF { public static void main(String[] args) throws Exception { try (Graph g = new Graph()) { final String value = "Hello from " + TensorFlow.version();
// 使用一个简单操做、一个名为 "MyConst" 的常数和一个值 "value" 来构建计算图。
try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) {
// Java API 目前还不包含足够方便的函数来执行“加”操做。
g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build();
}
// 在一个 Session 中执行 "MyConst" 操做。
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 from version 。 若是成功输出,那么你就已经成功地安装了 TensorFlow for Java 而且能够在Maven 项目中使用它。若是没有成功,请前往 Stack Overflow 搜索可能的解决方案。你能够跳过阅读本文档的其他部分。
这一节将介绍如何使用 JDK 安装获得的 java 和 javac 命令来使用 TensorFlow。 若是你的项目中使用了 Apache Maven,请参考使用上一节更简单的安装方法。
采起如下步骤在 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" # 默认处理器是 CPU 。若是你想要使用 GPU ,就将它设置成 "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.4.0-rc0.tar.gz" |
tar -xz -C ./jni
复制代码
用以下几步在 Windows 上安装 TensorFlow for Java :
安装 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();
// 使用一个简单操做、一个名为 "MyConst" 的常数和一个值 "value" 来构建计算图。
try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) {
// Java API 目前还不包含足够方便的函数来执行“加”操做。
g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build();
}
// 在一个 Session 中执行 "MyConst" 操做。
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.4.0-rc0.jar HelloTF.java
要运行依赖 TensorFlow 的 Java 程序,保证下面的 两个文件对于 JVM 来讲可用:
.jar
文件例如,使用如下命令命令在 Linux 和 Mac OS X 上运行 HelloTF
程序:
java -cp libtensorflow-1.4.0-rc0.jar:. -Djava.library.path=./jni HelloTF
使用如下命令在 Windows 上运行 HelloTF
程序:
java -cp libtensorflow-1.4.0-rc0.jar;. -Djava.library.path=jni HelloTF
若是程序打印出 Hello from version,说明你已经成功地安装了 TensorFlow for Java 而且可使用 API 了。 若是程序输出了其余内容,请查阅 Stack Overflow 以寻找解决方案。
有关更复杂的示例,请参考 LabelImage.java,它能够识别图像中的物体。
TensorFlow 是开源的。你能够根据这个 单独的文档 中的指示从源代码编译 TensorFlow for Java。
掘金翻译计划 是一个翻译优质互联网技术文章的社区,文章来源为 掘金 上的英文分享文章。内容覆盖 Android、iOS、前端、后端、区块链、产品、设计、人工智能等领域,想要查看更多优质译文请持续关注 掘金翻译计划、官方微博、知乎专栏。