TensorFlow GraphDef-ভিত্তিক মডেলগুলি (সাধারণত Python API এর মাধ্যমে তৈরি করা হয়) নিম্নলিখিত ফর্ম্যাটগুলির মধ্যে একটিতে সংরক্ষণ করা যেতে পারে:
- টেনসরফ্লো সংরক্ষিত মডেল
- হিমায়িত মডেল
- টেনসরফ্লো হাব মডিউল
উপরের সমস্ত ফর্ম্যাটগুলিকে TensorFlow.js কনভার্টার দ্বারা একটি ফর্ম্যাটে রূপান্তর করা যেতে পারে যা অনুমানের জন্য সরাসরি TensorFlow.js এ লোড করা যেতে পারে।
(দ্রষ্টব্য: TensorFlow সেশন বান্ডেল বিন্যাসকে অবমূল্যায়ন করেছে। অনুগ্রহ করে আপনার মডেলগুলিকে SavedModel ফর্ম্যাটে স্থানান্তর করুন।)
প্রয়োজনীয়তা
রূপান্তর পদ্ধতির জন্য একটি পাইথন পরিবেশ প্রয়োজন; আপনি pipenv বা virtualenv ব্যবহার করে একটি বিচ্ছিন্ন রাখতে চাইতে পারেন।
কনভার্টার ইনস্টল করতে, নিম্নলিখিত কমান্ডটি চালান:
pip install tensorflowjs
TensorFlow.js-এ একটি TensorFlow মডেল আমদানি করা একটি দ্বি-পদক্ষেপ প্রক্রিয়া। প্রথমে, একটি বিদ্যমান মডেলকে TensorFlow.js ওয়েব ফর্ম্যাটে রূপান্তর করুন এবং তারপরে এটিকে TensorFlow.js-এ লোড করুন।
ধাপ 1. একটি বিদ্যমান TensorFlow মডেলকে TensorFlow.js ওয়েব ফর্ম্যাটে রূপান্তর করুন
পিপ প্যাকেজ দ্বারা প্রদত্ত রূপান্তরকারী স্ক্রিপ্টটি চালান:
সংরক্ষিত মডেল উদাহরণ:
tensorflowjs_converter \
--input_format=tf_saved_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
--saved_model_tags=serve \
/mobilenet/saved_model \
/mobilenet/web_model
হিমায়িত মডেল উদাহরণ:
tensorflowjs_converter \
--input_format=tf_frozen_model \
--output_node_names='MobilenetV1/Predictions/Reshape_1' \
/mobilenet/frozen_model.pb \
/mobilenet/web_model
টেনসরফ্লো হাব মডিউল উদাহরণ:
tensorflowjs_converter \
--input_format=tf_hub \
'https://tfhub.dev/google/imagenet/mobilenet_v1_100_224/classification/1' \
/mobilenet/web_model
অবস্থানগত যুক্তি | বর্ণনা |
---|---|
input_path | সংরক্ষিত মডেল ডিরেক্টরি, সেশন বান্ডেল ডিরেক্টরি, হিমায়িত মডেল ফাইল বা TensorFlow হাব মডিউল হ্যান্ডেল বা পাথের সম্পূর্ণ পথ। |
output_path | সমস্ত আউটপুট শিল্পকর্মের জন্য পথ। |
অপশন | বর্ণনা |
---|---|
--input_format | ইনপুট মডেলের বিন্যাস। SavedModel-এর জন্য tf_saved_model, হিমায়িত মডেলের জন্য tf_frozen_model, সেশন বান্ডেলের জন্য tf_session_bundle, TensorFlow হাব মডিউলের জন্য tf_hub এবং Keras HDF5-এর জন্য keras ব্যবহার করুন। |
--output_node_names | আউটপুট নোডের নাম, কমা দ্বারা বিভক্ত। |
--saved_model_tags | শুধুমাত্র SavedModel রূপান্তরের ক্ষেত্রে প্রযোজ্য। লোড করার জন্য MetaGraphDef-এর ট্যাগ, কমা বিভক্ত বিন্যাসে। ডিফল্ট serve . |
--signature_name | শুধুমাত্র TensorFlow হাব মডিউল রূপান্তরের জন্য প্রযোজ্য, লোড করার জন্য স্বাক্ষর। default থেকে ডিফল্ট। https://www.tensorflow.org/hub/common_signatures/ দেখুন |
একটি বিস্তারিত সাহায্য বার্তা পেতে নিম্নলিখিত কমান্ড ব্যবহার করুন:
tensorflowjs_converter --help
কনভার্টার জেনারেটেড ফাইল
উপরের রূপান্তর স্ক্রিপ্ট দুটি ধরনের ফাইল তৈরি করে:
-
model.json
: ডেটাফ্লো গ্রাফ এবং ওজন ম্যানিফেস্ট -
group1-shard\*of\*
: বাইনারি ওজন ফাইলের একটি সংগ্রহ
উদাহরণস্বরূপ, এখানে MobileNet v2 রূপান্তর থেকে আউটপুট:
output_directory/model.json
output_directory/group1-shard1of5
...
output_directory/group1-shard5of5
ধাপ 2: লোড হচ্ছে এবং ব্রাউজারে চলছে
- tfjs-converter npm প্যাকেজ ইনস্টল করুন:
yarn add @tensorflow/tfjs
বা npm install @tensorflow/tfjs
- FrozenModel ক্লাস ইনস্ট্যান্টিয়েট করুন এবং ইনফারেন্স চালান।
import * as tf from '@tensorflow/tfjs';
import {loadGraphModel} from '@tensorflow/tfjs-converter';
const MODEL_URL = 'model_directory/model.json';
const model = await loadGraphModel(MODEL_URL);
const cat = document.getElementById('cat');
model.execute(tf.browser.fromPixels(cat));
MobileNet ডেমো দেখুন।
loadGraphModel
API একটি অতিরিক্ত LoadOptions
প্যারামিটার গ্রহণ করে, যা অনুরোধের সাথে শংসাপত্র বা কাস্টম হেডার পাঠাতে ব্যবহার করা যেতে পারে। বিস্তারিত জানার জন্য, loadGraphModel() ডকুমেন্টেশন দেখুন।
সমর্থিত অপারেশন
বর্তমানে TensorFlow.js একটি সীমিত সেট TensorFlow অপ্স সমর্থন করে। যদি আপনার মডেল একটি অসমর্থিত অপ ব্যবহার করে, tensorflowjs_converter
স্ক্রিপ্ট ব্যর্থ হবে এবং আপনার মডেলের অসমর্থিত অপের একটি তালিকা মুদ্রণ করবে। অনুগ্রহ করে প্রতিটি অপারেশানের জন্য একটি সমস্যা ফাইল করুন যাতে আমাদের জানাতে আপনার কোন অপারেশনগুলির জন্য সমর্থন প্রয়োজন৷
শুধুমাত্র ওজন লোড হচ্ছে
আপনি যদি শুধুমাত্র ওজন লোড করতে পছন্দ করেন তবে আপনি নিম্নলিখিত কোড স্নিপেট ব্যবহার করতে পারেন:
import * as tf from '@tensorflow/tfjs';
const weightManifestUrl = "https://example.org/model/weights_manifest.json";
const manifest = await fetch(weightManifestUrl);
this.weightManifest = await manifest.json();
const weightMap = await tf.io.loadWeights(
this.weightManifest, "https://example.org/model");
// Use `weightMap` ...