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

TensorFlow Java может работать на любой JVM для создания, обучения и развертывания моделей машинного обучения. Он поддерживает выполнение как на процессоре, так и на графическом процессоре, в графическом или активном режиме, а также предоставляет богатый 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, в которой он работает. Обратитесь к таблице версий Java TensorFlow, чтобы перечислить все доступные версии и их сопоставление со средой выполнения 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 доступны в репозитории 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 настроен.