libtensorflow

安装适用于 C 的 TensorFlow

TensorFlow 提供了一个以 c_api.h 定义的 C 语言 API,适用于为其他语言构建绑定。此 API 偏重于简洁性和一致性,便利性次之。

支持的平台

本指南将介绍如何安装适用于 C 的 TensorFlow。虽然这些说明可能也适用于其他配置,但我们只在满足以下要求的计算机上验证过这些说明(而且我们只支持在此类计算机上按这些说明操作):

  • Linux - 64 位、x86
  • macOS X - 版本 10.12.6 (Sierra) 或更高版本

安装

按照以下步骤安装适用于 C 的 TensorFlow 库并启用适用于 C 的 TensorFlow:

  1. 确定是只在 CPU 上运行适用于 C 的 TensorFlow,还是在 GPU 的辅助下运行。为帮助您做出决定,请参阅以下相关指南中标题为“确定要安装哪种 TensorFlow”部分的内容:

  2. 调用以下 shell 命令,以下载 TensorFlow C 库并解压缩到 /usr/local/lib

     

     

     

     TF_TYPE="cpu" # Change to "gpu" for GPU support
     OS="linux" # Change to "darwin" for macOS
     TARGET_DIRECTORY="/usr/local"
     curl -L \
       "https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow-${TF_TYPE}-${OS}-x86_64-1.8.0.tar.gz" |
       sudo tar -C $TARGET_DIRECTORY -xz

    tar 命令会将 TensorFlow C 库解压缩到 TARGET_DIRECTORY 的 lib 子目录中。例如,将 TARGET_DIRECTORY 指定为 /usr/local 会导致 tar 将 TensorFlow C 库解压缩到 /usr/local/lib

    如果您希望将库解压缩到其他目录中,请相应地调整 TARGET_DIRECTORY

  3. 如果您在第 2 步中将 TARGET_DIRECTORY 指定为系统目录(例如 /usr/local),请运行 ldconfig 以配置链接器。例如:

     

     

     

    sudo ldconfig

     

    如果您为 TARGET_DIRECTORY 指定的不是系统目录(例如 ~/mydir),则必须将解压缩目录(例如 ~/mydir/lib)附加到两个环境变量上。例如:

     

     

     

    export LIBRARY_PATH=$LIBRARY_PATH:~/mydir/lib # For both Linux and macOS X export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/mydir/lib # For Linux only export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:~/mydir/lib # For macOS X only

     

验证您的安装

在安装适用于 C 的 TensorFlow 后,将以下代码输入 hello_tf.c 文件:

 

 

 

#include <stdio.h>
#include <tensorflow/c/c_api.h>

int main() {
  printf("Hello from TensorFlow C library version %s\n", TF_Version());
  return 0;
}

构建并运行

调用以下命令来构建 hello_tf.c

 

 

gcc hello_tf.c

生成的可执行文件在运行后应会输出以下消息:

 

 

a.out Hello from TensorFlow C library version number

问题排查

如果程序构建失败,最可能的原因是 gcc 无法找到 TensorFlow C 库。解决此问题的一种方法是为 gcc 指定 -I 和 -L 选项。例如,如果 TARGET_LIBRARY 为 /usr/local,您应按如下方式调用 gcc

 

 

gcc -I/usr/local/include -L/usr/local/lib hello_tf.c -ltensorflow

如果 a.out 执行失败,请思考下列问题:

  • 程序是否正确编译?
  • 您是否为安装部分第 3 步中提到的环境变量指定了正确目录?
  • 您是否导出了这些环境变量?

如果仍然看到编译或执行错误消息,请在 StackOverflow 上进行搜索(或提问),以获取可行的解决方案。

 

 

 

安装适用于 Java 的 TensorFlow

TensorFlow 可提供在 Java 程序中使用的 API。这些 API 特别适合用于加载以 Python 语言创建的模型并在 Java 应用中运行这些模型。本指南将介绍如何安装适用于 Java 的 TensorFlow 并在 Java 应用中使用 TensorFlow。

警告:TensorFlow Java API 不在 TensorFlow API 稳定性保障的涵盖范围内。

支持的平台

本指南介绍如何安装适用于 Java 的 TensorFlow。虽然这些说明可能也适用于其他配置,但我们只在满足以下要求的计算机上验证过这些说明(而且我们只支持在此类计算机上按这些说明操作):

  • Ubuntu 16.04 或更高版本;64 位、x86
  • macOS 10.12.6 (Sierra) 或更高版本
  • Windows 7 或更高版本;64 位、x86

针对 Android 的安装说明位于单独的 Android TensorFlow 支持页面中。安装完成后,请查看这个适用于 Android 的完整 TensorFlow 示例

在 Maven 项目中使用 TensorFlow

如果您的项目使用 Apache Maven,请将以下内容添加到项目的 pom.xml 以使用 TensorFlow Java API:

 

 

 

<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>tensorflow</artifactId>
  <version>1.8.0</version>
</dependency>

就这么简单。

示例

举个例子,以下步骤可以创建一个使用 TensorFlow 的 Maven 项目:

  1. 创建项目的 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.8.0</version>
           </dependency>
         </dependencies>
     </project>
  2. 创建源文件 (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"));
          }
        }
      }
    }
  3. 编译并执行:

     

     

     

    # Use -q to hide logging from the mvn tool mvn -q compile exec:java

     

上述命令应该会输出 Hello from 版本。如果是这样,则说明您已成功设置适用于 Java 的 TensorFlow,随时可以在 Maven 项目中使用此 API。如果不是,请访问 Stack Overflow 查找可行的解决方案。您可以跳过本文档的其余部分。

GPU 支持

如果您的 Linux 系统搭载了 NVIDIA® GPU 且您的 TensorFlow Java 程序需要 GPU 加速,请将以下内容添加到项目的 pom.xml

 

 

 

<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>libtensorflow</artifactId>
  <version>1.8.0</version>
</dependency>
<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>libtensorflow_jni_gpu</artifactId>
  <version>1.8.0</version>
</dependency>

只有当您的系统是 Linux 且满足 GPU 要求时,才能通过 Maven 使用 GPU 加速。

在 JDK 中使用 TensorFlow

本部分介绍如何使用 JDK 安装产生的 java 和 javac 命令来使用 TensorFlow。如果您的项目使用 Apache Maven,请参阅上面的简单说明。

在 Linux 或 macOS 上安装

按照以下步骤在 Linux 或 macOS 上安装适用于 Java 的 TensorFlow:

  1. 下载 libtensorflow.jar,这是 TensorFlow Java 归档 (JAR)。

  2. 确定是只在 CPU 上运行适用于 Java 的 TensorFlow,还是在 GPU 的辅助下运行。为帮助您做出决定,请参阅以下相关指南中标题为“确定要安装哪种 TensorFlow”部分的内容:

  3. 通过运行以下 shell 命令,根据您的操作系统和处理器支持下载并解压缩相应的 Java 原生接口 (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://download.tensorflow.google.cn/libtensorflow/libtensorflow_jni-${TF_TYPE}-${OS}-x86_64-1.8.0.tar.gz" |
       tar -xz -C ./jni

在 Windows 上安装

按照以下步骤在 Windows 上安装适用于 Java 的 TensorFlow:

  1. 下载 libtensorflow.jar,这是 TensorFlow Java 归档 (JAR)。
  2. 下载 Windows 上适用于 Java 的 TensorFlow 对应的 Java 原生接口 (JNI) 文件。
  3. 解压缩该 .zip 文件。

验证安装

在安装适用于 Java 的 TensorFlow 后,您可通过将以下代码输入 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.8.0.jar HelloTF.java

运行

要运行依赖 TensorFlow 的 Java 程序,请确保 JVM 能访问以下两个文件:

  • 下载的 .jar 文件
  • 提取的 JNI 库

例如,以下命令行可在 Linux 和 macOS X 上运行 HelloTF 程序:

 

 

java -cp libtensorflow-1.8.0.jar:. -Djava.library.path=./jni HelloTF

以下命令行可在 Windows 上运行 HelloTF 程序:

 

 

java -cp libtensorflow-1.8.0.jar;. -Djava.library.path=jni HelloTF

如果程序输出 Hello from 版本,则表示您已成功安装适用于 Java 的 TensorFlow,随时可以使用此 API 了。如果程序输出其他内容,请访问 Stack Overflow 查找可行的解决方案。

高级示例

如需更复杂的示例,请参阅 LabelImage.java(它可识别图像中的物体)。

从源代码构建

TensorFlow 是开源系统。您可以按照另一个文档中的说明从 TensorFlow 源代码编译适用于 Java 的 TensorFlow。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值