TensorFlow جافا يمكن تشغيلها على أي JVM لبناء وتدريب ونشر نماذج التعلم الآلي. وهو يدعم كلاً من تنفيذ وحدة المعالجة المركزية ووحدة معالجة الرسومات ، في الرسم البياني أو الوضع الشغوف ، ويقدم واجهة برمجة تطبيقات غنية لاستخدام TensorFlow في بيئة JVM. تُستخدم Java ولغات JVM الأخرى ، مثل Scala و Kotlin ، بشكل متكرر في المؤسسات الكبيرة والصغيرة في جميع أنحاء العالم ، مما يجعل TensorFlow Java خيارًا استراتيجيًا لتبني التعلم الآلي على نطاق واسع.
متطلبات
يعمل TensorFlow Java على Java 8 وما فوق ، ويدعم الأنظمة الأساسية التالية خارج الصندوق:
- Ubuntu 16.04 أو أعلى ؛ 64 بت ، x86
- macOS 10.12.6 (Sierra) أو أعلى ؛ 64 بت ، x86
- Windows 7 أو أعلى ؛ 64 بت ، x86
إصدارات
TensorFlow جافا دورة الافراج الخاصة، مستقلة عن وقت TensorFlow . وبالتالي ، فإن نسخته لا تتطابق مع إصدار وقت تشغيل TensorFlow الذي يعمل عليه. راجع جافا TensorFlow الإصدارات الجدول لسرد كافة الإصدارات المتاحة ورسم الخرائط مع وقت تشغيل TensorFlow.
الآثار
هناك عدة طرق لإضافة TensorFlow جافا لمشروعك. أسهل واحد هو إضافة تبعية على tensorflow-core-platform
القطع الأثرية، التي تضم كلا من API TensorFlow جافا الأساسية وتبعيات الأم التي يحتاج إليها لتعمل على جميع الأنظمة الأساسية المعتمدة.
يمكنك أيضًا تحديد أحد الامتدادات التالية بدلاً من إصدار وحدة المعالجة المركزية الخالص:
-
tensorflow-core-platform-mkl
: دعم إنتل MKL-DNN على جميع المنابر -
tensorflow-core-platform-gpu
: دعم CUDA® على منصات لينكس وويندوز -
tensorflow-core-platform-mkl-gpu
: دعم إنتل MKL-DNN وCUDA® على منصة لينوكس.
وبالإضافة إلى ذلك، تبعية منفصلة على tensorflow-framework
يمكن أن تضاف إلى مكتبة الاستفادة من مجموعة غنية من المرافق العامة للتعليم آلة أساس TensorFlow-على JVM.
التثبيت مع مافن
لتشمل 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 جافا من المصادر، وربما تخصيصه، يرجى قراءة ما يلي تعليمات .
برنامج مثال
يوضح هذا المثال كيفية إنشاء مشروع 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.