TensorFlow 자바 설치

TensorFlow 자바 , 구축 훈련 및 기계 학습 모델을 배포하는 모든 JVM에서 실행할 수 있습니다. 그래프 또는 Eager 모드에서 CPU 및 GPU 실행을 모두 지원하며 JVM 환경에서 TensorFlow를 사용하기 위한 풍부한 API를 제공합니다. Java 및 Scala 및 Kotlin과 같은 기타 JVM 언어는 전 세계의 대기업 및 중소기업에서 자주 사용되므로 TensorFlow Java는 대규모 기계 학습을 채택하기 위한 전략적 선택입니다.

요구 사항

TensorFlow Java는 Java 8 이상에서 실행되며 즉시 사용 가능한 다음 플랫폼을 지원합니다.

  • 우분투 16.04 이상; 64비트, x86
  • macOS 10.12.6(시에라) 이상; 64비트, x86
  • Windows 7 이상 64비트, x86

버전

TensorFlow 자바는 독립적 자신의 출시주기가 TensorFlow 런타임 . 결과적으로 해당 버전은 실행되는 TensorFlow 런타임 버전과 일치하지 않습니다. TensorFlow 자바를 참조 테이블을 버전 모든 버전을 사용할 수와 TensorFlow 런타임과의 매핑을 나열합니다.

유물

거기 에는 여러 가지 프로젝트에 TensorFlow 자바를 추가 할 수는. 가장 쉬운 일이에 종속성을 추가하는 것입니다 tensorflow-core-platform TensorFlow 자바 코어 API하고 지원되는 모든 플랫폼에서 실행하는 데 필요한 기본 종속성이 모두 포함 유물.

순수 CPU 버전 대신 다음 확장 중 하나를 선택할 수도 있습니다.

  • tensorflow-core-platform-mkl : 모든 플랫폼에서 인텔 ® MKL-DNN 지원
  • tensorflow-core-platform-gpu : Linux 및 Windows 플랫폼에서 CUDA® 지원
  • tensorflow-core-platform-mkl-gpu : 리눅스 플랫폼에 인텔 ® MKL-DNN 및 CUDA®를 지원합니다.

또한,에 별도의 의존성 tensorflow-framework 라이브러리는 JVM에 TensorFlow 기반 기계 학습을위한 유틸리티의 풍부한 혜택을 추가 할 수 있습니다.

메이븐으로 설치하기

당신의 TensorFlow를 포함하려면 메이븐 응용 프로그램의에 종속성을 추가 유물 프로젝트의로 pom.xml 파일. 예를 들어,

<dependency>
  <groupId>org.tensorflow</groupId>
  <artifactId>tensorflow-core-platform</artifactId>
  <version>0.3.3</version>
</dependency>

종속성 수 줄이기

에 종속성을 추가하는 것이 중요합니다 tensorflow-core-platform 유물 것은 상당히 프로젝트의 크기를 늘릴 수 있습니다 지원되는 모든 플랫폼을위한 네이티브 라이브러리를 가져옵니다.

사용 가능한 플랫폼의 하위 집합을 타겟팅하려는 경우, 당신은 사용하여 다른 플랫폼에서 불필요한 유물 제외 할 수 있습니다 메이븐 의존성 제외 기능을.

또 다른 방법은 메이븐 명령 줄에서 또는에서, 세트 JavaCPP 시스템 등록 정보에있는 귀하의 응용 프로그램에 포함 할 플랫폼 선택 pom.xml . JavaCPP를 참조하십시오 설명서 자세한 내용은.

스냅샷 사용

TensorFlow 자바 소스 저장소에서 최신 TensorFlow 자바 개발 스냅 샷은 볼 수 있습니다 OSS Sonatype 넥서스 저장소. 이러한 유물에 의존하려면에서 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 자바를 구축하고, 가능성을 사용자 정의하려면, 다음 읽어 보시기 바랍니다 지침을 .

예제 프로그램

이 예는 TensorFlow를 사용하여 Apache Maven 프로젝트를 빌드하는 방법을 보여줍니다. 첫째, 프로젝트에 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가 구성되었습니다.