টেনসরফ্লো জাভা মেশিন লার্নিং মডেল তৈরি, প্রশিক্ষণ এবং স্থাপনের জন্য যেকোনো JVM-এ চলতে পারে। এটি গ্রাফ বা ইজার মোডে CPU এবং GPU উভয়ই এক্সিকিউশন সমর্থন করে এবং JVM পরিবেশে TensorFlow ব্যবহার করার জন্য একটি সমৃদ্ধ API উপস্থাপন করে। জাভা এবং অন্যান্য JVM ভাষাগুলি, যেমন স্কালা এবং কোটলিন, সারা বিশ্বে প্রায়শই বড় এবং ছোট উদ্যোগগুলিতে ব্যবহৃত হয়, যা টেনসরফ্লো জাভাকে বৃহৎ পরিসরে মেশিন লার্নিং গ্রহণের জন্য একটি কৌশলগত পছন্দ করে তোলে।
প্রয়োজনীয়তা
টেনসরফ্লো জাভা Java 8 এবং তার উপরে চলে এবং নিম্নলিখিত প্ল্যাটফর্মগুলিকে সমর্থন করে:
- উবুন্টু 16.04 বা উচ্চতর; 64-বিট, x86
- macOS 10.12.6 (সিয়েরা) বা উচ্চতর; 64-বিট, x86
- উইন্ডোজ 7 বা উচ্চতর; 64-বিট, x86
সংস্করণ
TensorFlow Java এর নিজস্ব রিলিজ চক্র আছে, TensorFlow রানটাইম থেকে স্বাধীন। ফলস্বরূপ, এর সংস্করণটি টেনসরফ্লো রানটাইমের সংস্করণের সাথে মেলে না যা এটি চলছে। TensorFlow রানটাইম সহ উপলব্ধ সমস্ত সংস্করণ এবং তাদের ম্যাপিং তালিকাভুক্ত করতে TensorFlow Java সংস্করণ টেবিলের সাথে পরামর্শ করুন৷
শিল্পকর্ম
আপনার প্রকল্পে TensorFlow Java যোগ করার বিভিন্ন উপায় রয়েছে। সবচেয়ে সহজটি হল tensorflow-core-platform
আর্টিফ্যাক্টের উপর নির্ভরতা যোগ করা, যার মধ্যে টেনসরফ্লো জাভা কোর এপিআই এবং সমস্ত সমর্থিত প্ল্যাটফর্মে চালানোর জন্য প্রয়োজনীয় স্থানীয় নির্ভরতা উভয়ই অন্তর্ভুক্ত।
আপনি বিশুদ্ধ CPU সংস্করণের পরিবর্তে নিম্নলিখিত এক্সটেনশনগুলির মধ্যে একটি নির্বাচন করতে পারেন:
-
tensorflow-core-platform-mkl
: সমস্ত প্ল্যাটফর্মে Intel® MKL-DNN-এর জন্য সমর্থন -
tensorflow-core-platform-gpu
: লিনাক্স এবং উইন্ডোজ প্ল্যাটফর্মে CUDA® এর জন্য সমর্থন -
tensorflow-core-platform-mkl-gpu
: লিনাক্স প্ল্যাটফর্মে Intel® MKL-DNN এবং CUDA®-এর জন্য সমর্থন।
উপরন্তু, JVM-এ TensorFlow-ভিত্তিক মেশিন লার্নিং-এর জন্য ইউটিলিটিগুলির একটি সমৃদ্ধ সেট থেকে উপকৃত হওয়ার জন্য tensorflow-framework
লাইব্রেরির উপর একটি পৃথক নির্ভরতা যোগ করা যেতে পারে।
মাভেনের সাথে ইনস্টল করা হচ্ছে
আপনার Maven অ্যাপ্লিকেশনে TensorFlow অন্তর্ভুক্ত করতে, আপনার প্রকল্পের pom.xml
ফাইলে এর শিল্পকর্মের উপর নির্ভরতা যোগ করুন। যেমন,
<dependency>
<groupId>org.tensorflow</groupId>
<artifactId>tensorflow-core-platform</artifactId>
<version>0.3.3</version>
</dependency>
নির্ভরশীলতার সংখ্যা হ্রাস করা
এটি লক্ষ্য করা গুরুত্বপূর্ণ যে tensorflow-core-platform
আর্টিফ্যাক্টের উপর নির্ভরতা যোগ করা সমস্ত সমর্থিত প্ল্যাটফর্মের জন্য নেটিভ লাইব্রেরি আমদানি করবে, যা আপনার প্রকল্পের আকার উল্লেখযোগ্যভাবে বৃদ্ধি করতে পারে।
আপনি যদি উপলব্ধ প্ল্যাটফর্মগুলির একটি উপসেটকে লক্ষ্য করতে চান তবে আপনি মাভেন নির্ভরতা বর্জন বৈশিষ্ট্যটি ব্যবহার করে অন্যান্য প্ল্যাটফর্মগুলি থেকে অপ্রয়োজনীয় শিল্পকর্মগুলি বাদ দিতে পারেন।
আপনার অ্যাপ্লিকেশনে আপনি কোন প্ল্যাটফর্মগুলি অন্তর্ভুক্ত করতে চান তা নির্বাচন করার আরেকটি উপায় হল JavaCPP সিস্টেম বৈশিষ্ট্যগুলি, আপনার Maven কমান্ড লাইনে বা আপনার pom.xml
এ সেট করা। আরও বিস্তারিত জানার জন্য অনুগ্রহ করে JavaCPP ডকুমেন্টেশন দেখুন।
স্ন্যাপশট ব্যবহার করে
টেনসরফ্লো জাভা সোর্স রিপোজিটরি থেকে সর্বশেষ টেনসরফ্লো জাভা ডেভেলপমেন্ট স্ন্যাপশটগুলি ওএসএস সোনাটাইপ নেক্সাস রিপোজিটরিতে পাওয়া যায়। এই নিদর্শনগুলির উপর নির্ভর করতে, আপনার pom.xml
এ OSS স্ন্যাপশট সংগ্রহস্থল কনফিগার করতে ভুলবেন না।
<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 দিয়ে ইনস্টল করা হচ্ছে
আপনার Gradle অ্যাপ্লিকেশনে TensorFlow অন্তর্ভুক্ত করতে, আপনার প্রকল্পের build.gradle
ফাইলে এর শিল্পকর্মের উপর নির্ভরতা যোগ করুন। যেমন,
repositories {
mavenCentral()
}
dependencies {
compile group: 'org.tensorflow', name: 'tensorflow-core-platform', version: '0.3.3'
}
নির্ভরশীলতার সংখ্যা হ্রাস করা
গ্রেডলের সাথে টেনসরফ্লো জাভা থেকে নেটিভ আর্টিফ্যাক্টগুলি বাদ দেওয়া মাভেনের মতো সহজ নয়। আমরা সুপারিশ করি যে আপনি এই সংখ্যার নির্ভরতা কমাতে Gradle JavaCPP প্লাগইনগুলি ব্যবহার করুন৷
আরো বিস্তারিত জানার জন্য অনুগ্রহ করে Gradle JavaCPP ডকুমেন্টেশন পড়ুন।
উৎস থেকে ইনস্টল করা হচ্ছে
উত্স থেকে টেনসরফ্লো জাভা তৈরি করতে এবং সম্ভবত এটি কাস্টমাইজ করতে, অনুগ্রহ করে নিম্নলিখিত নির্দেশাবলী পড়ুন।
উদাহরণ প্রোগ্রাম
এই উদাহরণটি দেখায় কিভাবে TensorFlow এর সাথে Apache Maven প্রজেক্ট তৈরি করতে হয়। প্রথমে, প্রকল্পের pom.xml
ফাইলে TensorFlow নির্ভরতা যোগ করুন:
<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
কমান্ডটি টেনসরফ্লো সংস্করণ এবং একটি সাধারণ গণনা প্রিন্ট করে।
সফলতার ! টেনসরফ্লো জাভা কনফিগার করা হয়েছে।