[譯] 安裝 TensorFlow for Java

本文出自 掘金翻譯計劃 正在組織翻譯的 TensorFlow 官方文檔。若是您有興趣,歡迎 申請成爲譯者,學習完譯者教程後,參與到文章和文檔的翻譯和及對當中。咱們也正在招募 TensorFlow 譯者,歡迎積極參加。前端


TensorFlow 爲 Java 程序提供了 API 。這些 API 是在 Java 應用中專門用來加載和執行 Python 建立的模型的。這個教程解釋瞭如何安裝並在應用中使用 TensorFlow for Javajava

警告: TensorFlow 的 Java API 包含在 TensorFlow 中。 API 穩定性保證linux

支持平臺

TensorFlow for Java 支持在如下操做系統中運行:android

  • Linux
  • Mac OS X
  • Windows
  • Android

Android 上的安裝說明在單獨的 Android TensorFlow 支持頁 中。在安裝完成後,請查看這個 Android 上 TensorFlow 的 完整示例ios

在 Maven 項目中使用 TensorFlow

若是你的項目使用了 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

  1. 建立項目的 pom.xmlshell

    <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>
    複製代碼
  2. 建立源文件(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"));
         }
       }
     }
    複製代碼

    }

  3. 編譯並執行:

     # 使用 -q 來隱藏 mvn 工具的日誌
    mvn -q compile exec:java

前面的這條命令應該輸出 Hello from version 。 若是成功輸出,那麼你就已經成功地安裝了 TensorFlow for Java 而且能夠在Maven 項目中使用它。若是沒有成功,請前往 Stack Overflow 搜索可能的解決方案。你能夠跳過閱讀本文檔的其他部分。

在 JDK 下使用 TensorFlow

這一節將介紹如何使用 JDK 安裝獲得的 java 和 javac 命令來使用 TensorFlow。 若是你的項目中使用了 Apache Maven,請參考使用上一節更簡單的安裝方法。

在 Linux 或 Mac OS 上安裝

採起如下步驟在 Linux 或 Mac OS 上安裝 TensorFlow for Java:

  1. 下載 libtensorflow.jar, 它是 TensorFlow Java Archive (JAR)。

  2. 決定你要只在 CPU 上運行 TensorFlow for Java 仍是要在 GPU 的協助下運行。爲了幫助您決定,請閱讀如下指南中標題爲「決定要安裝哪一個 TensorFlow」的部分:

    • @{install_linux#determine_which_tensorflow_to_install在 Linux 上安裝 TensorFlow}
    • @{install_mac#determine_which_tensorflow_to_install在 Mac OS 上 安裝 TensorFlow}
  3. 經過運行如下 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 上安裝

用以下幾步在 Windows 上安裝 TensorFlow for Java :

  1. 下載 libtensorflow.jar, 它是 TensorFlow Java Archive (JAR)。
  2. 下載適合 Windows 上的 TensorFlow for Java 的 Java Native Interface (JNI) 文件
  3. 解壓此 .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();

      // 使用一個簡單操做、一個名爲 "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 文件
  • 提取出的 JNI 庫

例如,使用如下命令命令在 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。


掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章
相關標籤/搜索