本文出自 掘金翻譯計劃 正在組織翻譯的 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、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。