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 настроен.