O TensorFlow Java pode ser executado em qualquer JVM para o desenvolvimento, o treinamento e a implantação de modelos de machine learning. É compatível com a execução em CPU e GPU, em modo de grafo ou antecipado, e apresenta uma API avançada para usar o TensorFlow em um ambiente de JVM. Java e outras linguagens de JVM, como Scala e Kotlin, são usadas com frequência em pequenas e grandes empresas no mundo todo. Isso torna o TensorFlow Java uma opção estratégica para adotar machine learning em larga escala.
Requisitos
O TensorFlow Java pode ser executado em Java 8 e versões posteriores, e é compatível de fábrica com as seguintes plataformas:
- Ubuntu 16.04 ou superior; 64 bits, x86
- macOS 10.12.6 (Sierra) ou superior; 64-bit, x86
- Windows 7 ou superior; 64 bits, x86
Versões
O TensorFlow Java tem seu próprio ciclo de versões, independente do ambiente de execução do TensorFlow. Consequentemente, suas versões não correspondem às versões do ambiente de execução do TensorFlow em que é executado. Consulte a tabela de controle de versões do TensorFlow Java para listar todas as versões disponíveis e sua correlação com o ambiente de execução do TensorFlow.
Artefatos
Existem
várias maneiras de adicionar
o TensorFlow Java ao seu projeto. A mais fácil é adicionar uma dependência no
artefato tensorflow-core-platform
, que inclui tanto a API Core do TensorFlow Java
quanto as dependências nativas que ele requer para ser executado em todas as plataformas
compatíveis.
Você também pode selecionar uma das extensões a seguir, em vez da versão pura de CPU:
tensorflow-core-platform-mkl
: compatível com Intel® MKL-DNN em todas as plataformastensorflow-core-platform-gpu
: compatível com CUDA® em plataformas Linux e Windowstensorflow-core-platform-mkl-gpu
: compatível com Intel® MKL-DNN e CUDA® em plataformas Linux e Windows
Além disso, uma dependência separada da biblioteca tensorflow-framework
pode ser
adicionada para aproveitar um conjunto avançado de utilitários para machine learning com base no TensorFlow
em JVM.
Instalação com Maven
Para incluir o TensorFlow no seu aplicativo Maven, adicione
uma dependência nos artefatos à fila pom.xml
do seu projeto.
Por exemplo,
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-platform</artifactId>
<version>0.2.0</version>
</dependency>
Redução no número de dependências
É importante observar que adicionar uma dependência a um artefato tensorflow-core-platform
importará bibliotecas nativas para todas as plataformas compatíveis, o que
pode aumentar significativamente o tamanho do seu projeto.
Se você quiser usar somente um subconjunto das plataformas compatíveis, exclua os artefatos desnecessários de outras plataformas usando o recurso de exclusão de dependências do Maven.
Outra maneira de selecionar as plataformas que você quer incluir no seu aplicativo é
definindo as propriedades do sistema JavaCPP na linha de comando do Maven ou no
pom.xml
. Consulte a
documentação
do JavaCPP para saber mais.
Uso de snapshots
Os últimos snapshots de desenvolvimento do TensorFlow Java para o repositório de origem dele
estão disponíveis no repositório
OSS Sonatype Nexus. Para que os artefatos funcionem corretamente, configure o repositório de snapshots do OSS
no 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.3.0-SNAPSHOT</version>
</dependency>
</dependencies>
Instalação com Gradle
Para incluir o TensorFlow no seu aplicativo Gradle, adicione
uma dependência aos artefatos à fila build.gradle
do seu projeto.
Por exemplo,
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.tensorflow', name: 'tensorflow-core-platform', version: '0.2.0'
}
Redução no número de dependências
Excluir os artefatos nativos do TensorFlow Java com Gradle não é tão fácil como com Maven. Recomendamos usar plugins do Gradle JavaCPP para reduzir o número de dependências.
Consulte a documentação do Gradle JavaCPP para saber mais.
Instalação da origem
Para criar o TensorFlow Java da origem e poder personalizá-lo, leia as seguintes instruções.
Programa de exemplo
Este exemplo mostra como criar um projeto do Apache Maven com o TensorFlow. Primeiro
adicione a dependência do TensorFlow ao arquivo pom.xml
do projeto:
<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.2.0</version>
</dependency>
</dependencies>
</project>
Crie o arquivo de origem 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);
Tensor<TInt32> x = TInt32.scalarOf(10);
Tensor<TInt32> dblX = dbl.call(x).expect(TInt32.DTYPE)) {
System.out.println(x.data().getInt() + " doubled is " + dblX.data().getInt());
}
}
private static Signature dbl(Ops tf) {
Placeholder<TInt32> x = tf.placeholder(TInt32.DTYPE);
Add<TInt32> dblX = tf.math.add(x, x);
return Signature.builder().input("x", x).output("dbl", dblX).build();
}
}
Compile e execute:
mvn -q compile exec:java
O comando imprime: TensorFlow version and a simple calculation.
Pronto. O TensorFlow Java está configurado.