TensorFlow fournit une API Java utile pour charger des modèles créés avec Python et les exécuter dans une application Java.
Packages nocturnes Libtensorflow Java
Les packages Libtensorflow JNI sont compilés la nuit et importés dans GCS pour toutes les plates-formes compatibles. Ils sont importés dans le bucket GCS libtensorflow-nightly et sont indexés par système d'exploitation et date de compilation.
Plates-formes compatibles
TensorFlow pour Java est compatible avec les systèmes suivants :
- Ubuntu 16.04 ou version ultérieure (64 bits et x86)
- macOS 10.12.6 (Sierra) ou version ultérieure
- Windows 7 ou version ultérieure (64 bits et x86)
Pour utiliser TensorFlow sur Android, consultez la page TensorFlow Lite.
TensorFlow avec Apache Maven
Pour utiliser TensorFlow avec Apache Maven, ajoutez la dépendance au fichier pom.xml
du projet :
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>2.4.0</version>
</dependency>
Compatibilité avec les GPU
Si votre système est compatible avec les GPU, ajoutez les dépendances TensorFlow suivantes au fichier pom.xml
du projet :
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>libtensorflow</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>libtensorflow_jni_gpu</artifactId>
<version>2.4.0</version>
</dependency>
Exemple de programme
Cet exemple montre comment créer un projet Apache Maven avec TensorFlow. Tout d'abord, ajoutez la dépendance TensorFlow au fichier pom.xml
du projet :
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>org.myorg</groupId>
<artifactId>hellotensorflow</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<exec.mainClass>HelloTensorFlow</exec.mainClass>
<!-- The sample code requires at least JDK 1.7. -->
<!-- The maven compiler plugin defaults to a lower version -->
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow</artifactId>
<version>1.14.0</version>
</dependency>
</dependencies>
</project>
Créez le fichier source (src/main/java/HelloTensorFlow.java
) :
import org.tensorflow.Graph;
import org.tensorflow.Session;
import org.tensorflow.Tensor;
import org.tensorflow.TensorFlow;
public class HelloTensorFlow {
public static void main(String[] args) throws Exception {
try (Graph g = new Graph()) {
final String value = "Hello from " + TensorFlow.version();
// Construct the computation graph with a single operation, a constant
// named "MyConst" with a value "value".
try (Tensor t = Tensor.create(value.getBytes("UTF-8"))) {
// The Java API doesn't yet include convenience functions for adding operations.
g.opBuilder("Const", "MyConst").setAttr("dtype", t.dataType()).setAttr("value", t).build();
}
// Execute the "MyConst" operation in a Session.
try (Session s = new Session(g);
// Generally, there may be multiple output tensors,
// all of them must be closed to prevent resource leaks.
Tensor output = s.runner().fetch("MyConst").run().get(0)) {
System.out.println(new String(output.bytesValue(), "UTF-8"));
}
}
}
}
Compilez et exécutez :
mvn -q compile exec:java # Use -q to hide logging
La commande devrait renvoyer le message suivant : Hello from version
TensorFlow avec le JDK
TensorFlow peut être utilisé avec le JDK via l'interface Java Native Interface (JNI).
Télécharger
- Téléchargez le fichier JAR de TensorFlow : libtensorflow.jar
- Téléchargez et extrayez le fichier JNI qui correspond à votre système d'exploitation et à votre processeur :
Version JNI | URL |
---|---|
Linux | |
Linux (processeur uniquement) | https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-cpu-linux-x86_64-2.4.0.tar.gz |
Linux (compatibilité avec les GPU) | https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-gpu-linux-x86_64-2.4.0.tar.gz |
macOS | |
macOS (processeur uniquement) | https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-cpu-darwin-x86_64-2.4.0.tar.gz |
Windows | |
Windows (processeur uniquement) | https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-cpu-windows-x86_64-2.4.0.zip |
Windows (compatibilité avec les GPU) | https://storage.googleapis.com/tensorflow/libtensorflow/libtensorflow_jni-gpu-windows-x86_64-2.4.0.zip |
Compiler
Compilez un programme qui utilise TensorFlow à l'aide du fichier HelloTensorFlow.java
de l'exemple précédent. Assurez-vous que le paramètre classpath
inclut le fichier libtensorflow.jar
:
javac -cp libtensorflow-2.4.0.jar HelloTensorFlow.java
Exécuter
Pour exécuter un programme Java TensorFlow, la machine virtuelle Java doit pouvoir accéder à libtensorflow.jar
et à la bibliothèque JNI extraite.
Linux/macOS
java -cp libtensorflow-2.4.0.jar:. -Djava.library.path=./jni HelloTensorFlow
Windows
java -cp libtensorflow-2.4.0.jar;. -Djava.library.path=jni HelloTensorFlow
La commande devrait renvoyer le message suivant : Hello from version
Compiler à partir de la source
TensorFlow est une technologie Open Source. Consultez les instructions pour compiler la version Java pour TensorFlow et les bibliothèques natives à partir du code source.