يمكن تشغيل TensorFlow Java على أي JVM لبناء نماذج التعلم الآلي وتدريبها ونشرها. وهو يدعم تنفيذ كل من وحدة المعالجة المركزية (CPU) ووحدة معالجة الرسومات (GPU)، في وضع الرسم البياني أو الوضع المتحمس، ويقدم واجهة برمجة تطبيقات غنية لاستخدام TensorFlow في بيئة JVM. يتم استخدام Java ولغات JVM الأخرى، مثل Scala وKotlin، بشكل متكرر في المؤسسات الكبيرة والصغيرة في جميع أنحاء العالم، مما يجعل TensorFlow Java خيارًا استراتيجيًا لاعتماد التعلم الآلي على نطاق واسع.
متطلبات
يعمل TensorFlow Java على Java 8 والإصدارات الأحدث، ويدعم الأنظمة الأساسية التالية:
- أوبونتو 16.04 أو أعلى؛ 64 بت، x86
- نظام التشغيل macOS 10.12.6 (سييرا) أو أعلى؛ 64 بت، x86
- ويندوز 7 أو أعلى؛ 64 بت، x86
الإصدارات
لدى TensorFlow Java دورة إصدار خاصة بها، مستقلة عن وقت تشغيل TensorFlow . وبالتالي، فإن إصداره لا يتطابق مع إصدار وقت تشغيل TensorFlow الذي يعمل عليه. راجع جدول إصدارات TensorFlow Java لسرد كافة الإصدارات المتاحة وتعيينها مع وقت تشغيل 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.
التثبيت مع مخضرم
لتضمين TensorFlow في تطبيق Maven الخاص بك، قم بإضافة تبعية على عناصره إلى ملف pom.xml
الخاص بمشروعك. على سبيل المثال،
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-platform</artifactId>
<version>0.3.3</version>
</dependency>
تقليل عدد التبعيات
من المهم ملاحظة أن إضافة تبعية على قطعة أثرية من نظام tensorflow-core-platform
ستؤدي إلى استيراد مكتبات أصلية لجميع الأنظمة الأساسية المدعومة، مما قد يؤدي إلى زيادة حجم مشروعك بشكل كبير.
إذا كنت ترغب في استهداف مجموعة فرعية من الأنظمة الأساسية المتاحة، فيمكنك استبعاد العناصر غير الضرورية من الأنظمة الأساسية الأخرى باستخدام ميزة Maven Dependency Exclusion .
هناك طريقة أخرى لتحديد الأنظمة الأساسية التي تريد تضمينها في تطبيقك وهي تعيين خصائص نظام 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.