Cài đặt TensorFlow Java

TensorFlow Java có thể chạy trên bất kỳ JVM cho việc xây dựng, đào tạo và triển khai các mô hình học máy. Nó hỗ trợ cả thực thi CPU và GPU, ở chế độ đồ thị hoặc chế độ háo hức và 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 làm cho TensorFlow Java trở thành lựa chọn chiến lược để áp dụng học máy ở 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 của riêng mình, độ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 của thời gian chạy TensorFlow mà nó chạy. Tham khảo TensorFlow Java versioning bảng liệt kê tất cả các phiên bản có sẵn và lập bản đồ của họ với thời gian chạy TensorFlow.

Đồ tạo tác

Có rất nhiều cách để thêm TensorFlow Java để dự án của bạn. Một trong những đơn giản nhất là thêm một sự phụ thuộc vào các tensorflow-core-platform vật, trong đó bao gồm cả API TensorFlow Java Core và sự phụ thuộc nguồn gốc nó đòi hỏi phải 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ợ cho 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.

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

Cài đặt với Maven

Để đưa TensorFlow trong bạn Maven ứng dụng, thêm một sự phụ thuộc vào nó hiện vật để dự án của bạn pom.xml tập tin. 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 ý rằng việc thêm một sự phụ thuộc vào một tensorflow-core-platform vật sẽ nhập khẩu các thư viện nguồn gốc cho tất cả các nền tảng được hỗ trợ, có thể tăng đáng kể kích thước của 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 sau đó bạn có thể loại trừ các hiện vật không cần thiết từ các nền tảng khác bằng cách sử dụng loại trừ Maven phụ thuộc tính năng.

Một cách khác để chọn những nền tảng mà bạn muốn bao gồm trong ứng dụng của bạn là thuộc tính thiết lập hệ thống JavaCPP, trong dòng lệnh Maven của bạn hoặc trong pom.xml . Xin vui lòng xem JavaCPP tài liệu hướng dẫn để biết thêm chi tiết.

Sử dụng Ảnh chụp nhanh

Mới nhất của bức ảnh chụp sự phát triển TensorFlow Java từ kho lưu trữ nguồn TensorFlow Java có sẵn trên OSS Sonatype kho Nexus. Phụ thuộc vào những hiện vật, hãy chắc chắn để cấu hình kho OSS snapshots trong bạn pom.xml .

<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 trong bạn Gradle ứng dụng, thêm một sự phụ thuộc vào nó hiện vật để dự án của bạn build.gradle tập tin. 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 tác gốc khỏi TensorFlow Java với 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 Gradle JavaCPP để giảm số lượng phụ thuộc này.

Xin vui lòng đọc tại Gradle JavaCPP tài liệu hướng dẫn để biết thêm chi tiết.

Cài đặt từ Nguồn

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

Chương trình mẫu

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

<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 tin 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 ra phiên bản TensorFlow và một phép tính đơn giản.

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