TensorFlow جاوا می تواند بر روی هر JVM برای ساخت، آموزش و استقرار مدل های یادگیری ماشین اجرا شود. این برنامه از اجرای هر دو CPU و GPU، در حالت گراف یا مشتاق، پشتیبانی می کند و یک API غنی برای استفاده از TensorFlow در یک محیط JVM ارائه می دهد. جاوا و سایر زبانهای JVM، مانند Scala و Kotlin، اغلب در شرکتهای بزرگ و کوچک در سرتاسر جهان استفاده میشوند، که TensorFlow Java را به یک انتخاب استراتژیک برای استفاده از یادگیری ماشینی در مقیاس بزرگ تبدیل میکند.
الزامات
TensorFlow جاوا بر روی جاوا 8 و بالاتر اجرا می شود و از پلتفرم های زیر پشتیبانی می کند:
- اوبونتو 16.04 یا بالاتر؛ 64 بیتی، x86
- macOS 10.12.6 (Sierra) یا بالاتر؛ 64 بیتی، x86
- ویندوز 7 یا بالاتر؛ 64 بیتی، x86
نسخه ها
TensorFlow جاوا چرخه انتشار خود را دارد، مستقل از زمان اجرا TensorFlow . در نتیجه، نسخه آن با نسخه زمان اجرا TensorFlow که در آن اجرا می شود مطابقت ندارد. برای فهرست کردن همه نسخههای موجود و نگاشت آنها با زمان اجرا TensorFlow، با جدول نسخهسازی جاوا TensorFlow مشورت کنید.
مصنوعات
راه های مختلفی برای اضافه کردن جاوا TensorFlow به پروژه شما وجود دارد. سادهترین روش اضافه کردن یک وابستگی به آرتیفکت tensorflow-core-platform
است که هم شامل TensorFlow Java Core API و هم وابستگیهای بومی مورد نیاز برای اجرا در همه پلتفرمهای پشتیبانیشده است.
همچنین می توانید به جای نسخه CPU خالص یکی از پسوندهای زیر را انتخاب کنید:
-
tensorflow-core-platform-mkl
: پشتیبانی از Intel® MKL-DNN در همه سیستم عامل ها -
tensorflow-core-platform-gpu
: پشتیبانی از CUDA® در پلتفرمهای لینوکس و ویندوز -
tensorflow-core-platform-mkl-gpu
: پشتیبانی از Intel® MKL-DNN و CUDA® در پلتفرم لینوکس.
علاوه بر این، میتوان برای بهرهمندی از مجموعهای غنی از ابزارهای کاربردی برای یادگیری ماشین مبتنی بر TensorFlow در JVM، یک وابستگی جداگانه به کتابخانه tensorflow-framework
اضافه کرد.
نصب با Maven
برای گنجاندن 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 را برای جزئیات بیشتر ببینید.
استفاده از Snapshots
جدیدترین عکسهای فوری توسعه TensorFlow جاوا از مخزن منبع جاوا TensorFlow در مخزن 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 از منابع، و احتمالاً سفارشی کردن آن، لطفاً دستورالعملهای زیر را بخوانید.
برنامه نمونه
این مثال نحوه ساخت یک پروژه 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 جاوا پیکربندی شده است.