Cài đặt TensorFlow Java

TensorFlow Java có thể chạy trên bất kỳ JVM nào để xây dựng, đào tạo và triển khai các mô hình học máy. Nó hỗ trợ thực thi cả CPU và GPU, ở chế độ biểu đồ hoặc háo hức, đồng thời trình bày một API phong phú để sử dụng TensorFlow trong môi trường JVM. Java và các ngôn ngữ JVM khác, như Scala và Kotlin, thường được sử dụng trong các doanh nghiệp lớn và nhỏ trên toàn thế giới, điều này khiến TensorFlow Java trở thành lựa chọn chiến lược để áp dụng machine learning ở quy mô lớn.

Yêu cầu

TensorFlow Java chạy trên Java 8 trở lên và hỗ trợ các nền tảng sau:

  • Ubuntu 16.04 trở lên; 64-bit, x86
  • macOS 10.12.6 (Sierra) trở lên; 64-bit, x86
  • Windows 7 trở lên; 64-bit, x86

Phiên bản

TensorFlow Java có chu kỳ phát hành riêng, độc lập với thời gian chạy TensorFlow . Do đó, phiên bản của nó không khớp với phiên bản thời gian chạy TensorFlow mà nó chạy. Tham khảo bảng phiên bản TensorFlow Java để liệt kê tất cả các phiên bản có sẵn và ánh xạ của chúng với thời gian chạy TensorFlow.

Hiện vật

một số cách để thêm TensorFlow Java vào dự án của bạn. Cách dễ nhất là thêm phần phụ thuộc vào cấu phần phần mềm tensorflow-core-platform , bao gồm cả API TensorFlow Java Core và các phần phụ thuộc gốc mà nó yêu cầu để chạy trên tất cả các nền tảng được hỗ trợ.

Bạn cũng có thể chọn một trong các tiện ích mở rộng sau thay vì phiên bản CPU thuần túy:

  • tensorflow-core-platform-mkl : Hỗ trợ Intel® MKL-DNN trên tất cả các nền tảng
  • tensorflow-core-platform-gpu : Hỗ trợ CUDA® trên nền tảng Linux và Windows
  • tensorflow-core-platform-mkl-gpu : Hỗ trợ Intel® MKL-DNN và CUDA® trên nền tảng Linux.

Ngoài ra, có thể thêm một phần phụ thuộc riêng vào thư viện tensorflow-framework để hưởng lợi từ bộ tiện ích phong phú dành cho máy học dựa trên TensorFlow trên JVM.

Cài đặt với Maven

Để đưa TensorFlow vào ứng dụng Maven của bạn, hãy thêm phần phụ thuộc vào các tạo phẩm của nó vào tệp pom.xml của dự án. Ví dụ,

<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>tensorflow-core-platform</artifactId>
  <version>0.3.3</version>
</dependency>

Giảm số lượng phụ thuộc

Điều quan trọng cần lưu ý là việc thêm phần phụ thuộc vào cấu phần phần mềm tensorflow-core-platform sẽ nhập các thư viện gốc cho tất cả các nền tảng được hỗ trợ, điều này có thể làm tăng đáng kể quy mô dự án của bạn.

Nếu bạn muốn nhắm mục tiêu một tập hợp con của các nền tảng có sẵn thì bạn có thể loại trừ các tạo phẩm không cần thiết khỏi các nền tảng khác bằng cách sử dụng tính năng Loại trừ phụ thuộc Maven .

Một cách khác để chọn nền tảng bạn muốn đưa vào ứng dụng của mình là đặt thuộc tính hệ thống JavaCPP, trong dòng lệnh Maven hoặc trong pom.xml của bạn. Vui lòng xem tài liệu JavaCPP để biết thêm chi tiết.

Sử dụng Ảnh chụp nhanh

Các ảnh chụp nhanh phát triển TensorFlow Java mới nhất từ ​​kho lưu trữ nguồn TensorFlow Java hiện có sẵn trên kho lưu trữ OSS Sonatype Nexus. Để phụ thuộc vào các tạo phẩm này, hãy đảm bảo định cấu hình kho lưu trữ ảnh chụp nhanh OSS trong pom.xml của bạn.

<repositories>
    <repository>
        <id>tensorflow-snapshots</id>
        <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>org.tensorflow</groupId>
        <artifactId>tensorflow-core-platform</artifactId>
        <version>0.4.0-SNAPSHOT</version>
    </dependency>
</dependencies>

Cài đặt với Gradle

Để đưa TensorFlow vào ứng dụng Gradle của bạn, hãy thêm phần phụ thuộc vào các tạo phẩm của nó vào tệp build.gradle của dự án. Ví dụ,

repositories {
    mavenCentral()
}

dependencies {
    compile group: 'org.tensorflow', name: 'tensorflow-core-platform', version: '0.3.3'
}

Giảm số lượng phụ thuộc

Việc loại trừ các tạo phẩm gốc khỏi TensorFlow Java bằng Gradle không dễ dàng như với Maven. Chúng tôi khuyên bạn nên sử dụng các plugin JavaCPP của Gradle để giảm số lượng phần phụ thuộc này.

Vui lòng đọc tài liệu Gradle JavaCPP để biết thêm chi tiết.

Cài đặt từ nguồn

Để xây dựng TensorFlow Java từ các nguồn và có thể tùy chỉnh nó, vui lòng đọc hướng dẫn sau.

Chương trình ví dụ

Ví dụ này cho thấy cách xây dựng dự án Apache Maven bằng TensorFlow. Đầu tiên, thêm phần phụ thuộc TensorFlow vào tệp pom.xml của dự án:

<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.myorg</groupId>
    <artifactId>hellotensorflow</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <exec.mainClass>HelloTensorFlow</exec.mainClass>
        <!-- Minimal version for compiling TensorFlow Java is JDK 8 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <!-- Include TensorFlow (pure CPU only) for all supported platforms -->
        <dependency>
            <groupId>org.tensorflow</groupId>
            <artifactId>tensorflow-core-platform</artifactId>
            <version>0.3.3</version>
        </dependency>
    </dependencies>
</project>

Tạo tệp nguồn src/main/java/HelloTensorFlow.java :

import org.tensorflow.ConcreteFunction;
import org.tensorflow.Signature;
import org.tensorflow.Tensor;
import org.tensorflow.TensorFlow;
import org.tensorflow.op.Ops;
import org.tensorflow.op.core.Placeholder;
import org.tensorflow.op.math.Add;
import org.tensorflow.types.TInt32;

public class HelloTensorFlow {

  public static void main(String[] args) throws Exception {
    System.out.println("Hello TensorFlow " + TensorFlow.version());

    try (ConcreteFunction dbl = ConcreteFunction.create(HelloTensorFlow::dbl);
        TInt32 x = TInt32.scalarOf(10);
        Tensor dblX = dbl.call(x)) {
      System.out.println(x.getInt() + " doubled is " + ((TInt32)dblX).getInt());
    }
  }

  private static Signature dbl(Ops tf) {
    Placeholder<TInt32> x = tf.placeholder(TInt32.class);
    Add<TInt32> dblX = tf.math.add(x, x);
    return Signature.builder().input("x", x).output("dbl", dblX).build();
  }
}

Biên dịch và thực thi:

mvn -q compile exec:java

Lệnh in phiên bản TensorFlow và một phép tính đơn giản.

Thành công! TensorFlow Java được cấu hình.