Установить TensorFlow Java

TensorFlow Java может работать на любой виртуальной машины Java для создания, подготовки и развертывания моделей машинного обучения. Он поддерживает выполнение как процессора, так и графического процессора в графическом или активном режиме и представляет богатый API для использования TensorFlow в среде JVM. Java и другие языки JVM, такие как Scala и Kotlin, часто используются на крупных и малых предприятиях по всему миру, что делает TensorFlow Java стратегическим выбором для широкомасштабного внедрения машинного обучения.

Требования

TensorFlow Java работает на Java 8 и выше и поддерживает следующие платформы:

  • Ubuntu 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 и нативные зависимости он требует , чтобы работать на всех поддерживаемых платформах.

Вы также можете выбрать одно из следующих расширений вместо чистой версии ЦП:

  • 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 зависимостей функции.

Другим способ , чтобы выбрать , какие платформы вы хотите включить в приложении к свойствам набора системных JavaCPP, в командной строке Maven или в pom.xml . Пожалуйста , см JavaCPP документации для получения более подробной информации.

Использование снимков

Последние снимки развития TensorFlow Java из репозитория TensorFlow Java доступны на ОСС Sonatype репозиторий Nexus. Для того, чтобы зависеть от этих артефактов, убедитесь , чтобы настроить ОСС снимок хранилища в вашем 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 настроен.