TensorFlow.js সংরক্ষণ এবং লোড মডেলের সঙ্গে তৈরি করা হয়েছে জন্য কার্যকারিতা প্রদান করে Layers
এপিআই বা বিদ্যমান TensorFlow মডেল থেকে রূপান্তরিত। এগুলি হতে পারে এমন মডেল যা আপনি নিজে প্রশিক্ষিত করেছেন বা অন্যদের দ্বারা প্রশিক্ষিত। লেয়ার এপিআই ব্যবহার করার একটি মূল সুবিধা হল এটির সাথে তৈরি করা মডেলগুলি সিরিয়ালাইজযোগ্য এবং আমরা এই টিউটোরিয়ালে এটিই অন্বেষণ করব।
এই টিউটোরিয়ালটি TensorFlow.js মডেলগুলি সংরক্ষণ এবং লোড করার উপর ফোকাস করবে (JSON ফাইল দ্বারা সনাক্তযোগ্য)। আমরা টেনসরফ্লো পাইথন মডেলগুলিও আমদানি করতে পারি। এই মডেলগুলি লোড করা নিম্নলিখিত দুটি টিউটোরিয়ালে কভার করা হয়েছে:
একটি tf.Model সংরক্ষণ করুন
tf.Model
এবং tf.Sequential
উভয় একটি ফাংশন প্রদান model.save
আপনি টপোলজি এবং একটি মডেল ওজন সংরক্ষণের মঞ্জুরি দেয়।
টপোলজি: এটি একটি ফাইল যা একটি মডেলের আর্কিটেকচার বর্ণনা করে (অর্থাৎ এটি কোন অপারেশন ব্যবহার করে)। এতে মডেলের ওজনের রেফারেন্স রয়েছে যা বাহ্যিকভাবে সংরক্ষণ করা হয়।
ওজন: এগুলি হল বাইনারি ফাইল যা একটি প্রদত্ত মডেলের ওজন একটি দক্ষ বিন্যাসে সংরক্ষণ করে। এগুলি সাধারণত টপোলজি হিসাবে একই ফোল্ডারে সংরক্ষণ করা হয়।
আসুন দেখে নেওয়া যাক একটি মডেল সংরক্ষণ করার জন্য কোডটি কেমন দেখাচ্ছে
const saveResult = await model.save('localstorage://my-model-1');
কয়েকটি বিষয় লক্ষ করুন:
-
save
পদ্ধতি একটি URL মত স্ট্রিং যুক্তি লাগে যে একটি স্কিম সঙ্গে শুরু হয়। এটি বর্ণনা করে যে গন্তব্যের ধরণে আমরা একটি মডেল সংরক্ষণ করার চেষ্টা করছি৷ পরিকল্পনা উপরের উদাহরণে হয়localstorage://
- পরিকল্পনা একটি পাথ দ্বারা অনুসরণ করা হয়। পাথ উপরের উদাহরণে হয়
my-model-1
। -
save
পদ্ধতি অ্যাসিঙ্ক্রোনাস হয়। - ফেরত মান
model.save
একটি JSON বস্তু যে এই ধরনের মডেলের টপোলজি এবং ওজন বাইট আকারের মত তথ্য বহন করে হয়। - মডেল সংরক্ষণ করতে ব্যবহৃত পরিবেশ কোন পরিবেশ মডেল লোড করতে পারে তা প্রভাবিত করে না। node.js-এ একটি মডেল সংরক্ষণ করা এটিকে ব্রাউজারে লোড হতে বাধা দেয় না।
নীচে আমরা উপলব্ধ বিভিন্ন স্কিম পরীক্ষা করব.
স্থানীয় সঞ্চয়স্থান (শুধুমাত্র ব্রাউজার)
স্কীম: localstorage://
await model.save('localstorage://my-model');
এই নামটি অধীনে একটি মডেল সংরক্ষণ my-model
ব্রাউজারের মধ্যে স্থানীয় সংগ্রহস্থল । এটি রিফ্রেশের মধ্যে বজায় থাকবে, যদিও স্থানীয় স্টোরেজ ব্যবহারকারী বা ব্রাউজার নিজেই সাফ করতে পারে যদি স্থান একটি উদ্বেগ হয়ে ওঠে। প্রতিটি ব্রাউজার একটি নির্দিষ্ট ডোমেনের জন্য স্থানীয় স্টোরেজে কত ডেটা সংরক্ষণ করা যেতে পারে তার নিজস্ব সীমা নির্ধারণ করে।
IndexedDB (শুধুমাত্র ব্রাউজার)
স্কীম: indexeddb://
await model.save('indexeddb://my-model');
এই ব্রাউজার এর একটি মডেল সংরক্ষণ IndexedDB স্টোরেজ। স্থানীয় স্টোরেজের মতো এটি রিফ্রেশের মধ্যে টিকে থাকে, এটি সঞ্চিত বস্তুর আকারের উপরও বড় সীমাবদ্ধ থাকে।
ফাইল ডাউনলোড (শুধুমাত্র ব্রাউজার)
স্কীম: downloads://
await model.save('downloads://my-model');
এর ফলে ব্রাউজারটি ব্যবহারকারীর মেশিনে মডেল ফাইল ডাউনলোড করবে। দুটি ফাইল উত্পাদিত হবে:
- একটি পাঠ্য তাদেরকে JSON নামের ফাইল
[my-model].json
ওজন ফাইলে টপোলজি এবং রেফারেন্স বহন করে যা, নীচে বর্ণিত। - একটি বাইনারি নামে ওজন মান বহন ফাইল
[my-model].weights.bin
।
আপনাকে অবশ্যই সেই নামটি পরিবর্তন করতে পারেন [my-model]
ভিন্ন একটি নাম দিয়ে ফাইল জন্য।
কারণ .json
ফাইল পয়েন্ট .bin
একটি আপেক্ষিক পাথ ব্যবহার করে, দুটি ফাইলের একই ফোল্ডারে থাকা উচিত।
HTTP(S) অনুরোধ
স্কীম: http://
অথবা https://
await model.save('http://model-server.domain/upload')
এটি একটি দূরবর্তী সার্ভারে একটি মডেল সংরক্ষণ করার জন্য একটি ওয়েব অনুরোধ তৈরি করবে৷ আপনার সেই রিমোট সার্ভারের নিয়ন্ত্রণ থাকা উচিত যাতে আপনি নিশ্চিত করতে পারেন যে এটি অনুরোধটি পরিচালনা করতে সক্ষম।
মডেল একটি মাধ্যমে নির্দিষ্ট HTTP সার্ভারে পাঠানো হবে পোষ্ট অনুরোধ। পোস্ট লাশ রয়েছে multipart/form-data
বিন্যাস এবং দুটি ফাইলের নিয়ে গঠিত
- একটি পাঠ্য তাদেরকে JSON নামের ফাইল
model.json
ওজন করার টপোলজি এবং রেফারেন্স বহন করে যা, নীচে বর্ণিত ফাইল। - একটি বাইনারি ওজন মান বহন ফাইল নামে
model.weights.bin
।
মনে রাখবেন যে দুটি ফাইলের নাম সর্বদা ঠিক যেমন উপরে উল্লেখ করা হয়েছে (নামটি ফাংশনে অন্তর্নির্মিত)। এই API ডক একটি পাইথন কোড স্নিপেট প্রমান করে যে কিভাবে এক ব্যবহার করতে পারেন ধারণ করে বোতল অনুরোধ থেকে সম্ভূত হ্যান্ডেল করতে ওয়েব ফ্রেমওয়ার্ক save
।
প্রায়শই আপনাকে আপনার HTTP সার্ভারে আরও আর্গুমেন্ট বা অনুরোধ শিরোনাম পাঠাতে হবে (যেমন প্রমাণীকরণের জন্য বা আপনি যদি মডেলটি সংরক্ষণ করা উচিত এমন একটি ফোল্ডার নির্দিষ্ট করতে চান)। আপনি থেকে অনুরোধ এই দিক উপর সূক্ষ্মাতিসূক্ষ্ম নিয়ন্ত্রণ লাভ করতে পারেন save
URL টি স্ট্রিং যুক্তি প্রতিস্থাপন tf.io.browserHTTPRequest
। এই API HTTP অনুরোধগুলি নিয়ন্ত্রণ করার ক্ষেত্রে আরও বেশি নমনীয়তা প্রদান করে।
উদাহরণ স্বরূপ:
await model.save(tf.io.browserHTTPRequest(
'http://model-server.domain/upload',
{method: 'PUT', headers: {'header_key_1': 'header_value_1'} }));
নেটিভ ফাইল সিস্টেম (শুধুমাত্র Node.js)
স্কীম: file://
await model.save('file:///path/to/my-model');
Node.js-এ চলমান অবস্থায় আমাদের ফাইল সিস্টেমে সরাসরি অ্যাক্সেস থাকে এবং আমরা সেখানে মডেল সংরক্ষণ করতে পারি। কমান্ড উপরোক্ত দুটি ফাইলের সংরক্ষণ করতে হবে path
afer নিদিষ্ট scheme
।
- একটি পাঠ্য তাদেরকে JSON নামের ফাইল
[model].json
ওজন ফাইলে টপোলজি এবং রেফারেন্স বহন করে যা, নীচে বর্ণিত। - একটি বাইনারি নামে ওজন মান বহন ফাইল
[model].weights.bin
।
মনে রাখবেন যে দুটি ফাইলের নাম সর্বদা ঠিক যেমন উপরে উল্লেখ করা হয়েছে (নামটি ফাংশনে অন্তর্নির্মিত)।
একটি tf.Model লোড করা হচ্ছে
একটি মডেল যে উপরোক্ত পদ্ধতি ব্যবহার করে সংরক্ষিত ছিল দেওয়া, আমরা এটি ব্যবহার লোড করতে পারেন tf.loadLayersModel
API- টি।
একটি মডেল লোড করার জন্য কোডটি কেমন তা দেখে নেওয়া যাক
const model = await tf.loadLayersModel('localstorage://my-model-1');
কয়েকটি বিষয় লক্ষ করুন:
- ভালো লেগেছে
model.save()
,loadLayersModel
ফাংশন একটি URL মত স্ট্রিং যুক্তি লাগে যে একটি স্কিম সঙ্গে শুরু হয়। এটি বর্ণনা করে যে গন্তব্যের ধরন থেকে আমরা একটি মডেল লোড করার চেষ্টা করছি৷ - পরিকল্পনা একটি পাথ দ্বারা অনুসরণ করা হয়। পাথ উপরের উদাহরণে হয়
my-model-1
। - ইউআরএল-এর মতো স্ট্রিংটি আইওহ্যান্ডলার ইন্টারফেসের সাথে মেলে এমন একটি বস্তু দ্বারা প্রতিস্থাপিত হতে পারে।
-
tf.loadLayersModel()
ফাংশন অ্যাসিঙ্ক্রোনাস হয়। - ফেরত মান
tf.loadLayersModel
হয়tf.Model
নীচে আমরা উপলব্ধ বিভিন্ন স্কিম পরীক্ষা করব.
স্থানীয় সঞ্চয়স্থান (শুধুমাত্র ব্রাউজার)
স্কীম: localstorage://
const model = await tf.loadLayersModel('localstorage://my-model');
এই লোড একটি মডেল নামে my-model
ব্রাউজারের থেকে স্থানীয় সংগ্রহস্থল ।
IndexedDB (শুধুমাত্র ব্রাউজার)
স্কীম: indexeddb://
const model = await tf.loadLayersModel('indexeddb://my-model');
এই লোড ব্রাউজারের থেকে একটি মডেল IndexedDB স্টোরেজ।
HTTP(S)
স্কীম: http://
অথবা https://
const model = await tf.loadLayersModel('http://model-server.domain/download/model.json');
এটি একটি http এন্ডপয়েন্ট থেকে একটি মডেল লোড করে। লোড করার পর json
ফাইল ফাংশন সংশ্লিষ্ট জন্য অনুরোধ করতে হবে .bin
যে ফাইল json
ফাইল রেফারেন্স।
নেটিভ ফাইল সিস্টেম (শুধুমাত্র Node.js)
স্কীম: file://
const model = await tf.loadLayersModel('file://path/to/my-model/model.json');
Node.js এ চলমান অবস্থায় আমাদের ফাইল সিস্টেমে সরাসরি অ্যাক্সেস থাকে এবং সেখান থেকে মডেল লোড করতে পারি। উল্লেখ্য যে উপরের ফাংশন কলে আমরা মডেল.json ফাইলটি নিজেই উল্লেখ করি (যেখানে সংরক্ষণ করার সময় আমরা একটি ফোল্ডার নির্দিষ্ট করি)। সংশ্লিষ্ট .bin
ফাইল (গুলি) হিসাবে একই ফোল্ডারে থাকা উচিত json
ফাইল।
IOHandlers সহ মডেল লোড হচ্ছে
আপনি একটি সাথে কাস্টম লোড আচরণ বাস্তবায়ন করতে পারে স্কিম উপরে আপনার প্রয়োজনের জন্য যথেষ্ট না হয়, তাহলে IOHandler
। এক IOHandler
TensorFlow.js জোগান দেয় tf.io.browserFiles
যা ব্রাউজার ব্যবহারকারীদের ব্রাউজার মডেল ফাইল আপলোড করতে পারবেন। দেখুন ডকুমেন্টেশন দেখুন।
কাস্টম IOHandlers সঙ্গে মডেল সংরক্ষণ এবং লোড হচ্ছে
আপনি একটি প্রয়োগ করে কাস্টম ধারাবাহিকতাতে আচরণ বাস্তবায়ন করতে পারে স্কিম উপরে আপনার লোড করা হচ্ছে অথবা সংরক্ষণ প্রয়োজনের জন্য যথেষ্ট না হয়, তাহলে IOHandler
।
একটি IOHandler
একটি সঙ্গে একটি বস্তুর save
এবং load
পদ্ধতি।
save
ফাংশন এক পরামিতি যে একটি ম্যাচ লাগে ModelArtifacts ইন্টারফেস এবং একটি প্রতিশ্রুতি আসতে উচিত যে একটি থেকে সমাধান করা SaveResult অবজেক্ট।
load
ফাংশনটি কোন প্যারামিটার নেয় এবং একটি প্রতিশ্রুতি করে একটি থেকে সমাধান করা ফেরত পাঠাবেন ModelArtifacts আপত্তি। এই একই বস্তু প্রেরণ করা হয় save
।
দেখুন BrowserHTTPRequest কিভাবে একটি IOHandler বাস্তবায়ন একটি উদাহরণ জন্য।