ติดตั้ง TensorFlow Java

TensorFlow Java สามารถทำงานบน JVM ใดก็ได้สำหรับการสร้าง ฝึกอบรม และปรับใช้โมเดลการเรียนรู้ของเครื่อง รองรับการทำงานของ CPU และ GPU ในโหมดกราฟหรือโหมดกระตือรือร้น และนำเสนอ API ที่สมบูรณ์สำหรับการใช้ TensorFlow ในสภาพแวดล้อม JVM Java และภาษา JVM อื่นๆ เช่น Scala และ Kotlin มักใช้ในองค์กรขนาดใหญ่และขนาดเล็กทั่วโลก ซึ่งทำให้ TensorFlow Java เป็นตัวเลือกเชิงกลยุทธ์สำหรับการนำการเรียนรู้ของเครื่องไปใช้ในวงกว้าง

ความต้องการ

TensorFlow Java ทำงานบน Java 8 ขึ้นไป และรองรับแพลตฟอร์มต่อไปนี้นอกกรอบ:

  • อูบุนตู 16.04 หรือสูงกว่า; 64 บิต x86
  • macOS 10.12.6 (Sierra) หรือสูงกว่า; 64 บิต x86
  • Windows 7 หรือสูงกว่า; 64 บิต x86

รุ่นต่างๆ

TensorFlow Java มีรอบการเปิดตัวของตัวเอง โดยไม่ขึ้นอยู่กับ รันไทม์ของ TensorFlow ด้วยเหตุนี้ เวอร์ชันจึงไม่ตรงกับเวอร์ชันของรันไทม์ TensorFlow ที่รันไทม์ ดู ตารางเวอร์ชันของ TensorFlow Java เพื่อแสดงรายการเวอร์ชันทั้งหมดที่มีอยู่และการแมปกับรันไทม์ของ TensorFlow

สิ่งประดิษฐ์

มี หลายวิธี ในการเพิ่ม TensorFlow Java ให้กับโปรเจ็กต์ของคุณ วิธีที่ง่ายที่สุดคือการเพิ่มการขึ้นต่อกันบนส่วน tensorflow-core-platform ซึ่งรวมถึง TensorFlow Java Core API และการขึ้นต่อกันแบบเนทีฟที่ต้องใช้ในการทำงานบนแพลตฟอร์มที่รองรับทั้งหมด

คุณยังสามารถเลือกหนึ่งในส่วนขยายต่อไปนี้แทนเวอร์ชัน CPU ล้วนๆ ได้:

  • tensorflow-core-platform-mkl : รองรับ Intel® MKL-DNN บนทุกแพลตฟอร์ม
  • tensorflow-core-platform-gpu : รองรับ CUDA® บนแพลตฟอร์ม Linux และ Windows
  • tensorflow-core-platform-mkl-gpu : รองรับ Intel® MKL-DNN และ CUDA® บนแพลตฟอร์ม Linux

นอกจากนี้ คุณสามารถเพิ่มการพึ่งพา tensorflow-framework โฟลว์แยกต่างหากเพื่อรับประโยชน์จากชุดยูทิลิตี้ที่หลากหลายสำหรับแมชชีนเลิร์นนิงที่ใช้ TensorFlow บน JVM

การติดตั้งด้วย Maven

หากต้องการรวม TensorFlow ในแอปพลิเค ชัน Maven ของคุณ ให้เพิ่มการขึ้นต่อกันกับ ส่วนต่างๆ ของ แอปพลิเคชันลงในไฟล์ pom.xml ของโปรเจ็กต์ของคุณ ตัวอย่างเช่น,

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

การลดจำนวนการพึ่งพา

สิ่งสำคัญที่ควรทราบคือการเพิ่มการพึ่งพาส่วน tensorflow-core-platform จะนำเข้าไลบรารีดั้งเดิมสำหรับแพลตฟอร์มที่รองรับทั้งหมด ซึ่งสามารถเพิ่มขนาดของโปรเจ็กต์ของคุณได้อย่างมาก

หากคุณต้องการกำหนดเป้าหมายชุดย่อยของแพลตฟอร์มที่มีอยู่ คุณสามารถแยกสิ่งที่ไม่จำเป็นออกจากแพลตฟอร์มอื่นๆ ได้โดยใช้คุณสมบัติ Maven Dependency Exclusion

อีกวิธีหนึ่งในการเลือกแพลตฟอร์มที่คุณต้องการรวมไว้ในแอปพลิเคชันของคุณคือการตั้งค่าคุณสมบัติระบบ JavaCPP ในบรรทัดคำสั่ง Maven หรือใน pom.xml ของคุณ โปรดดู เอกสารประกอบ JavaCPP สำหรับรายละเอียดเพิ่มเติม

การใช้สแนปชอต

สแน็ปช็อตการพัฒนา TensorFlow Java ล่าสุดจากแหล่งเก็บข้อมูลซอร์ส TensorFlow Java มีอยู่ในที่เก็บ OSS Sonatype Nexus หากต้องการขึ้นอยู่กับอาร์ติแฟกต์เหล่านี้ ตรวจสอบให้แน่ใจว่าได้กำหนดค่าที่เก็บสแนปช็อต OSS ใน 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>

การติดตั้งด้วย Gradle

หากต้องการรวม TensorFlow ไว้ในแอปพลิเคชัน Gradle ของคุณ ให้เพิ่มการพึ่งพา ส่วนที่สร้างขึ้น ในไฟล์ build.gradle ของโปรเจ็กต์ของคุณ ตัวอย่างเช่น,

repositories {
    mavenCentral()
}

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

การลดจำนวนการพึ่งพา

การยกเว้นสิ่งประดิษฐ์ดั้งเดิมจาก TensorFlow Java ด้วย Gradle นั้นไม่ใช่เรื่องง่ายเหมือนกับ Maven เราขอแนะนำให้คุณใช้ปลั๊กอิน Gradle JavaCPP เพื่อลดจำนวนการขึ้นต่อกันนี้

โปรดอ่าน เอกสารประกอบ Gradle JavaCPP สำหรับรายละเอียดเพิ่มเติม

การติดตั้งจากแหล่งที่มา

หากต้องการสร้าง TensorFlow Java จากแหล่งที่มาและอาจปรับแต่งได้ โปรดอ่าน คำแนะนำ ต่อไปนี้

ตัวอย่างโปรแกรม

ตัวอย่างนี้แสดงวิธีสร้างโปรเจ็กต์ Apache Maven ด้วย TensorFlow ขั้นแรก เพิ่มการพึ่งพา TensorFlow ให้กับไฟล์ pom.xml ของโปรเจ็กต์:

<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>

สร้างไฟล์ต้นฉบับ 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();
  }
}

คอมไพล์และดำเนินการ:

mvn -q compile exec:java

คำสั่งจะพิมพ์เวอร์ชัน TensorFlow และการคำนวณอย่างง่าย

ความสำเร็จ! กำหนดค่า TensorFlow Java แล้ว