TensorFlow Java można uruchomić na dowolnym JVM na budowę, szkolenie i wdrażanie modeli uczenia maszynowego. Obsługuje wykonywanie zarówno CPU, jak i GPU, w trybie graficznym lub przyspieszonym, i przedstawia bogate API do korzystania z TensorFlow w środowisku JVM. Java i inne języki JVM, takie jak Scala i Kotlin, są często używane w dużych i małych przedsiębiorstwach na całym świecie, co sprawia, że TensorFlow Java jest strategicznym wyborem do wdrażania uczenia maszynowego na dużą skalę.
Wymagania
TensorFlow Java działa na Javie 8 i nowszych oraz obsługuje od razu następujące platformy:
- Ubuntu 16.04 lub nowszy; 64-bitowy, x86
- macOS 10.12.6 (Sierra) lub nowszy; 64-bitowy, x86
- Windows 7 lub nowszy; 64-bitowy, x86
Wersje
TensorFlow Java ma swój własny cykl wydawniczy, niezależny od wykonywania TensorFlow . W związku z tym jego wersja nie jest zgodna z wersją środowiska wykonawczego TensorFlow, na którym działa. Skonsultować się z TensorFlow Java wersjonowania stół do listy dostępne wszystkie wersje i ich odwzorowanie ze środowiskiem wykonawczym TensorFlow.
Artefakty
Istnieje kilka sposobów , aby dodać TensorFlow Java do projektu. Najprostszym z nich jest dodanie zależność od tensorflow-core-platform
artefaktu, który obejmuje zarówno API TensorFlow Java rdzeń i rodzimych zależności wymagane do uruchomienia na wszystkich obsługiwanych platformach.
Możesz również wybrać jedno z następujących rozszerzeń zamiast czystej wersji CPU:
-
tensorflow-core-platform-mkl
: Wsparcie dla Intel MKL-DNN na wszystkich platformach -
tensorflow-core-platform-gpu
: Wsparcie dla CUDA® na platformach Linux i Windows -
tensorflow-core-platform-mkl-gpu
: Wsparcie dla Intel MKL-DNN i CUDA® na platformie Linux.
Ponadto, oddzielna zależność od tensorflow-framework
biblioteki mogą być dodawane do skorzystania z bogatego zestawu narzędzi do uczenia maszynowego TensorFlow opartych na JVM.
Instalacja za pomocą Maven
Aby dołączyć TensorFlow w Maven aplikacji, dodać zależność od swoich artefaktów do Twojego projektu pom.xml
pliku. Na przykład,
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-platform</artifactId>
<version>0.3.3</version>
</dependency>
Zmniejszenie liczby zależności
Ważne jest, aby pamiętać, że dodanie zależność od tensorflow-core-platform
artefaktu będzie importować biblioteki rodzime dla wszystkich obsługiwanych platform, które mogą znacznie zwiększyć rozmiar swojego projektu.
Jeśli chcesz kierować podzbiór dostępnych platform następnie można wykluczyć niepotrzebne artefakty z innych platform wykorzystujących wykluczania Maven Dependency funkcję.
Innym sposobem, aby wybrać platform, które chcesz umieścić w swojej aplikacji jest zestaw właściwości systemu JavaCPP, w linii poleceń lub Maven w pom.xml
. Proszę zobaczyć JavaCPP dokumentację po więcej szczegółów.
Korzystanie z migawek
Najnowsze zrzuty rozwojowe TensorFlow Java z repozytorium źródłowego TensorFlow Java są dostępne na OSS Sonatype repozytorium Nexus. Polegać na tych artefaktów, upewnij się, aby skonfigurować repozytorium OSS migawek w 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>
Instalacja z Gradle
Aby dołączyć TensorFlow w Gradle aplikacji, dodać zależność od swoich artefaktów do Twojego projektu build.gradle
pliku. Na przykład,
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.tensorflow', name: 'tensorflow-core-platform', version: '0.3.3'
}
Zmniejszenie liczby zależności
Wykluczanie natywnych artefaktów z TensorFlow Java z Gradle nie jest tak proste, jak z Mavenem. Zalecamy korzystanie z wtyczek Gradle JavaCPP w celu zmniejszenia tej liczby zależności.
Proszę przeczytać w Gradle JavaCPP dokumentację po więcej szczegółów.
Instalowanie ze źródeł
Aby zbudować TensorFlow Java ze źródeł, i ewentualnie dostosować go, proszę zapoznać się z poniższymi instrukcjami .
Przykładowy program
Ten przykład pokazuje, jak zbudować projekt Apache Maven za pomocą TensorFlow. Po pierwsze, dodać zależność TensorFlow do projektu pom.xml
pliku:
<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>
Tworzenie pliku źródłowego 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();
}
}
Skompiluj i wykonaj:
mvn -q compile exec:java
Polecenie wyświetla wersję TensorFlow i prostą kalkulację.
Powodzenie! TensorFlow Java jest skonfigurowana.