התקן את TensorFlow Java

TensorFlow Java יכול לרוץ על כל JVM לבנייה, הדרכה ופריסה של מודלים של למידת מכונה. הוא תומך בביצוע מעבד ו-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 artifact, הכולל גם את TensorFlow Java Core API וגם את התלות המקורית שהוא דורש כדי לפעול בכל הפלטפורמות הנתמכות.

אתה יכול גם לבחור אחת מההרחבות הבאות במקום גרסת המעבד הטהורה:

  • tensorflow-core-platform-mkl : תמיכה עבור Intel® MKL-DNN בכל הפלטפורמות
  • tensorflow-core-platform-gpu : תמיכה ב-CUDA® בפלטפורמות לינוקס ו-Windows
  • tensorflow-core-platform-mkl-gpu : תמיכה עבור Intel® MKL-DNN ו-CUDA® בפלטפורמת לינוקס.

בנוסף, ניתן להוסיף תלות נפרדת בספריית 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 artifact תייבא ספריות מקוריות עבור כל הפלטפורמות הנתמכות, מה שיכול להגדיל משמעותית את גודל הפרויקט שלך.

אם ברצונך למקד לקבוצת משנה של הפלטפורמות הזמינות, תוכל לא לכלול את החפצים המיותרים מהפלטפורמות האחרות באמצעות תכונת אי הכללת התלות של Maven .

דרך נוספת לבחור אילו פלטפורמות ברצונך לכלול ביישום שלך היא להגדיר מאפייני מערכת JavaCPP, בשורת הפקודה של Maven או ב- pom.xml שלך. אנא עיין בתיעוד JavaCPP לפרטים נוספים.

שימוש ב-Snapshots

צילומי הפיתוח האחרונים של 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 מוגדר.