1. সংক্ষিপ্ত বিবরণ
এই ল্যাবে, আপনি শিখবেন কিভাবে একটি Keras ক্লাসিফায়ার তৈরি করতে হয়। ফুল চিনতে নিউরাল নেটওয়ার্ক স্তরগুলির নিখুঁত সংমিশ্রণ বের করার চেষ্টা করার পরিবর্তে, আমরা প্রথমে ট্রান্সফার লার্নিং নামে একটি কৌশল ব্যবহার করব যা আমাদের ডেটাসেটে একটি শক্তিশালী প্রাক-প্রশিক্ষিত মডেলকে অভিযোজিত করবে।
এই ল্যাবে নিউরাল নেটওয়ার্ক সম্পর্কে প্রয়োজনীয় তাত্ত্বিক ব্যাখ্যা অন্তর্ভুক্ত রয়েছে এবং এটি ডেভেলপারদের জন্য গভীর শিক্ষা সম্পর্কে শেখার জন্য একটি ভালো সূচনা বিন্দু।
এই ল্যাবটি "কেরা অন টিপিইউ" সিরিজের দ্বিতীয় অংশ। আপনি নিম্নলিখিত ক্রমে অথবা স্বাধীনভাবে এগুলি করতে পারেন।
- TPU-গতির ডেটা পাইপলাইন: tf.data.Dataset এবং TFRecords
- [এই ল্যাব] আপনার প্রথম কেরাস মডেল, ট্রান্সফার লার্নিং সহ
- কেরাস এবং টিপিইউ সহ কনভোলিউশনাল নিউরাল নেটওয়ার্ক
- আধুনিক কনভনেট, স্কুইজনেট, এক্সসেপশন, কেরাস এবং টিপিইউ সহ

তুমি কি শিখবে
- সফটম্যাক্স লেয়ার এবং ক্রস-এনট্রপি লস সহ আপনার নিজস্ব কেরাস ইমেজ ক্লাসিফায়ার তৈরি করতে
- প্রতারণা করার জন্য 😈, নিজস্ব মডেল তৈরির পরিবর্তে ট্রান্সফার লার্নিং ব্যবহার করা।
প্রতিক্রিয়া
এই কোড ল্যাবে যদি কিছু ভুল দেখতে পান, তাহলে অনুগ্রহ করে আমাদের জানান। GitHub সমস্যাগুলির [ প্রতিক্রিয়া লিঙ্ক ] মাধ্যমে প্রতিক্রিয়া প্রদান করা যেতে পারে।
২. গুগল কোলাবোরেটরি দ্রুত শুরু
এই ল্যাবটি গুগল কোলাবোরেটরি ব্যবহার করে এবং আপনার পক্ষ থেকে কোনও সেটআপের প্রয়োজন হয় না। কোলাবোরেটরি শিক্ষার উদ্দেশ্যে একটি অনলাইন নোটবুক প্ল্যাটফর্ম। এটি বিনামূল্যে CPU, GPU এবং TPU প্রশিক্ষণ প্রদান করে।

আপনি এই নমুনা নোটবুকটি খুলে কয়েকটি কক্ষ ঘুরে Colaboratory-এর সাথে পরিচিত হতে পারেন।
একটি TPU ব্যাকএন্ড নির্বাচন করুন

Colab মেনুতে, Runtime > Change runtime type নির্বাচন করুন এবং তারপর TPU নির্বাচন করুন। এই কোড ল্যাবে আপনি হার্ডওয়্যার-অ্যাক্সিলারেটেড প্রশিক্ষণের জন্য সমর্থিত একটি শক্তিশালী TPU (টেন্সর প্রসেসিং ইউনিট) ব্যবহার করবেন। প্রথম এক্সিকিউশনে রানটাইমের সাথে সংযোগ স্বয়ংক্রিয়ভাবে হয়ে যাবে, অথবা আপনি উপরের ডানদিকের কোণায় "Connect" বোতামটি ব্যবহার করতে পারেন।
নোটবুক সম্পাদন

একটি কক্ষে ক্লিক করে এবং Shift-ENTER ব্যবহার করে একের পর এক কক্ষ সম্পাদন করুন। আপনি Runtime > Run all ব্যবহার করে সম্পূর্ণ নোটবুকটিও চালাতে পারেন।
সুচিপত্র

সকল নোটবুকের একটি সূচিপত্র থাকে। আপনি বাম দিকের কালো তীর ব্যবহার করে এটি খুলতে পারেন।
লুকানো কোষ

কিছু কোষে কেবল তাদের শিরোনাম দেখাবে। এটি একটি Colab-নির্দিষ্ট নোটবুক বৈশিষ্ট্য। ভিতরের কোডটি দেখতে আপনি সেগুলিতে ডাবল ক্লিক করতে পারেন তবে এটি সাধারণত খুব আকর্ষণীয় হয় না। সাধারণত সমর্থন বা ভিজ্যুয়ালাইজেশন ফাংশন। ভিতরের ফাংশনগুলি সংজ্ঞায়িত করার জন্য আপনাকে এখনও এই কোষগুলি চালাতে হবে।
প্রমাণীকরণ

একটি অনুমোদিত অ্যাকাউন্টের মাধ্যমে প্রমাণীকরণ করলে, Colab আপনার ব্যক্তিগত Google Cloud Storage বাকেট অ্যাক্সেস করতে পারবে। উপরের কোড স্নিপেটটি একটি প্রমাণীকরণ প্রক্রিয়া শুরু করবে।
৩. [তথ্য] নিউরাল নেটওয়ার্ক ক্লাসিফায়ার ১০১
সংক্ষেপে
যদি পরবর্তী অনুচ্ছেদে মোটা অক্ষরে লেখা সমস্ত শব্দ আপনার জানা থাকে, তাহলে আপনি পরবর্তী অনুশীলনে যেতে পারেন। যদি আপনি সবেমাত্র গভীর শিক্ষা শুরু করেন তবে স্বাগতম, এবং দয়া করে পড়তে থাকুন।
স্তরের ক্রম হিসাবে নির্মিত মডেলগুলির জন্য Keras Sequential API অফার করে। উদাহরণস্বরূপ, তিনটি ঘন স্তর ব্যবহার করে একটি চিত্র শ্রেণিবদ্ধকারী Keras এ এভাবে লেখা যেতে পারে:
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=[192, 192, 3]),
tf.keras.layers.Dense(500, activation="relu"),
tf.keras.layers.Dense(50, activation="relu"),
tf.keras.layers.Dense(5, activation='softmax') # classifying into 5 classes
])
# this configures the training of the model. Keras calls it "compiling" the model.
model.compile(
optimizer='adam',
loss= 'categorical_crossentropy',
metrics=['accuracy']) # % of correct answers
# train the model
model.fit(dataset, ... )

ঘন নিউরাল নেটওয়ার্ক
এটি চিত্র শ্রেণীবদ্ধ করার জন্য সবচেয়ে সহজ নিউরাল নেটওয়ার্ক। এটি স্তরগুলিতে সাজানো "নিউরন" দিয়ে তৈরি। প্রথম স্তরটি ইনপুট ডেটা প্রক্রিয়া করে এবং এর আউটপুটগুলি অন্যান্য স্তরগুলিতে ফিড করে। একে "ঘন" বলা হয় কারণ প্রতিটি নিউরন পূর্ববর্তী স্তরের সমস্ত নিউরনের সাথে সংযুক্ত থাকে।

আপনি এই ধরণের নেটওয়ার্কে একটি ছবি ফিড করতে পারেন, এর সমস্ত পিক্সেলের RGB মানগুলিকে একটি লম্বা ভেক্টরে সমতল করে এবং এটিকে ইনপুট হিসেবে ব্যবহার করে। এটি ছবি শনাক্তকরণের জন্য সেরা কৌশল নয় তবে আমরা পরে এটি আরও উন্নত করব।
নিউরন, সক্রিয়করণ, RELU
একটি "নিউরন" তার সমস্ত ইনপুটগুলির একটি ওজনযুক্ত যোগফল গণনা করে, "বায়াস" নামক একটি মান যোগ করে এবং একটি তথাকথিত "অ্যাক্টিভেশন ফাংশন" এর মাধ্যমে ফলাফলটি ফিড করে। ওজন এবং পক্ষপাত প্রথমে অজানা। এগুলি এলোমেলোভাবে শুরু করা হবে এবং প্রচুর জ্ঞাত ডেটার উপর নিউরাল নেটওয়ার্ককে প্রশিক্ষণ দিয়ে "শেখা" হবে।

সবচেয়ে জনপ্রিয় অ্যাক্টিভেশন ফাংশন হল RELU for Rectified Linear Unit। এটি একটি খুব সহজ ফাংশন যা আপনি উপরের গ্রাফে দেখতে পাচ্ছেন।
সফটম্যাক্স অ্যাক্টিভেশন
উপরের নেটওয়ার্কটি ৫-নিউরন স্তর দিয়ে শেষ হয় কারণ আমরা ফুলগুলিকে ৫টি বিভাগে শ্রেণীবদ্ধ করছি (গোলাপ, টিউলিপ, ড্যান্ডেলিয়ন, ডেইজি, সূর্যমুখী)। মধ্যবর্তী স্তরের নিউরনগুলি ক্লাসিক RELU অ্যাক্টিভেশন ফাংশন ব্যবহার করে সক্রিয় করা হয়। যদিও শেষ স্তরে, আমরা ০ এবং ১ এর মধ্যে সংখ্যা গণনা করতে চাই যা এই ফুলটি গোলাপ, টিউলিপ ইত্যাদি হওয়ার সম্ভাবনা প্রতিনিধিত্ব করে। এর জন্য, আমরা "সফটম্যাক্স" নামক একটি অ্যাক্টিভেশন ফাংশন ব্যবহার করব।
একটি ভেক্টরের উপর সফটম্যাক্স প্রয়োগ করা হয় প্রতিটি উপাদানের সূচক গ্রহণ করে এবং তারপর ভেক্টরকে স্বাভাবিক করে, সাধারণত L1 আদর্শ (পরম মানের যোগফল) ব্যবহার করে যাতে মানগুলি 1 পর্যন্ত যোগ হয় এবং সম্ভাব্যতা হিসাবে ব্যাখ্যা করা যায়।


ক্রস-এনট্রপি ক্ষতি
এখন যেহেতু আমাদের নিউরাল নেটওয়ার্ক ইনপুট ইমেজ থেকে ভবিষ্যদ্বাণী তৈরি করে, তাই আমাদের পরিমাপ করতে হবে যে সেগুলি কতটা ভালো, অর্থাৎ নেটওয়ার্ক আমাদের যা বলে এবং সঠিক উত্তরের মধ্যে দূরত্ব, যাকে প্রায়শই "লেবেল" বলা হয়। মনে রাখবেন যে ডেটাসেটের সমস্ত ছবির জন্য আমাদের কাছে সঠিক লেবেল রয়েছে।
যেকোনো দূরত্বই কাজ করবে, কিন্তু শ্রেণীবিভাগের সমস্যার জন্য তথাকথিত "ক্রস-এনট্রপি দূরত্ব" সবচেয়ে কার্যকর । আমরা এটিকে আমাদের ত্রুটি বা "ক্ষতি" ফাংশন বলব:

গ্রেডিয়েন্ট ডিসেন্ট
নিউরাল নেটওয়ার্ককে "প্রশিক্ষণ" দেওয়ার অর্থ আসলে ওজন এবং পক্ষপাত সামঞ্জস্য করার জন্য প্রশিক্ষণ চিত্র এবং লেবেল ব্যবহার করা যাতে ক্রস-এনট্রপি লস ফাংশন কমানো যায়। এটি কীভাবে কাজ করে তা এখানে।
ক্রস-এনট্রপি হল ওজন, পক্ষপাত, প্রশিক্ষণ চিত্রের পিক্সেল এবং এর পরিচিত শ্রেণীর একটি ফাংশন।
যদি আমরা ক্রস-এনট্রপির আংশিক ডেরিভেটিভগুলি সমস্ত ওজন এবং সমস্ত পক্ষপাতের তুলনামূলকভাবে গণনা করি, তাহলে আমরা একটি "গ্রেডিয়েন্ট" পাই, যা একটি প্রদত্ত চিত্র, লেবেল এবং ওজন এবং পক্ষপাতের বর্তমান মানের জন্য গণনা করা হয়। মনে রাখবেন যে আমাদের লক্ষ লক্ষ ওজন এবং পক্ষপাত থাকতে পারে তাই গ্রেডিয়েন্ট গণনা করা অনেক কাজের মতো শোনাচ্ছে। সৌভাগ্যবশত, টেনসরফ্লো আমাদের জন্য এটি করে। গ্রেডিয়েন্টের গাণিতিক বৈশিষ্ট্য হল এটি "উপরের দিকে" নির্দেশ করে। যেহেতু আমরা যেখানে ক্রস-এনট্রপি কম সেখানে যেতে চাই, তাই আমরা বিপরীত দিকে যাই। আমরা গ্রেডিয়েন্টের একটি ভগ্নাংশ দ্বারা ওজন এবং পক্ষপাত আপডেট করি। তারপরে আমরা প্রশিক্ষণ লুপে পরবর্তী ব্যাচের প্রশিক্ষণ চিত্র এবং লেবেল ব্যবহার করে একই জিনিস বারবার করি। আশা করি, এটি এমন একটি জায়গায় একত্রিত হবে যেখানে ক্রস-এনট্রপি ন্যূনতম, যদিও কিছুই গ্যারান্টি দেয় না যে এই ন্যূনতমটি অনন্য।

মিনি-ব্যাচিং এবং মোমেন্টাম
আপনি শুধুমাত্র একটি উদাহরণ ছবিতে আপনার গ্রেডিয়েন্ট গণনা করতে পারেন এবং ওজন এবং পক্ষপাতগুলি তাৎক্ষণিকভাবে আপডেট করতে পারেন, কিন্তু উদাহরণস্বরূপ, 128টি ছবির একটি ব্যাচে এটি করলে একটি গ্রেডিয়েন্ট পাওয়া যায় যা বিভিন্ন উদাহরণ চিত্র দ্বারা আরোপিত সীমাবদ্ধতাগুলিকে আরও ভালভাবে উপস্থাপন করে এবং তাই সমাধানের দিকে দ্রুত একত্রিত হওয়ার সম্ভাবনা থাকে। মিনি-ব্যাচের আকার একটি সামঞ্জস্যযোগ্য প্যারামিটার।
এই কৌশল, যাকে কখনও কখনও "স্টোকাস্টিক গ্রেডিয়েন্ট ডিসেন্ট" বলা হয়, এর আরেকটি, আরও বাস্তবসম্মত সুবিধা রয়েছে: ব্যাচগুলির সাথে কাজ করার অর্থ বৃহত্তর ম্যাট্রিক্সগুলির সাথে কাজ করা এবং এগুলি সাধারণত GPU এবং TPU গুলিতে অপ্টিমাইজ করা সহজ।
যদিও অভিসৃতিটি এখনও কিছুটা বিশৃঙ্খল হতে পারে এবং এমনকি যদি গ্রেডিয়েন্ট ভেক্টরগুলি সমস্ত শূন্য হয় তবে এটি বন্ধও হতে পারে। এর অর্থ কি আমরা একটি সর্বনিম্ন খুঁজে পেয়েছি? সর্বদা নয়। একটি গ্রেডিয়েন্ট উপাদান সর্বনিম্ন বা সর্বোচ্চ উভয়ই হতে পারে। লক্ষ লক্ষ উপাদান সহ একটি গ্রেডিয়েন্ট ভেক্টরের ক্ষেত্রে, যদি তারা সমস্ত শূন্য হয়, তবে প্রতিটি শূন্য একটি সর্বনিম্নের সাথে মিলে যাওয়ার এবং তাদের কোনওটিই সর্বোচ্চ বিন্দুর সাথে না মিলার সম্ভাবনা খুবই কম। বহু মাত্রার স্থানে, স্যাডল পয়েন্টগুলি বেশ সাধারণ এবং আমরা তাদের উপর থামতে চাই না।

চিত্র: একটি স্যাডল পয়েন্ট। গ্রেডিয়েন্ট 0 কিন্তু সব দিকে এটি সর্বনিম্ন নয়। (ছবি অ্যাট্রিবিউশন উইকিমিডিয়া: নিকোগুয়ারো - নিজস্ব কাজ, CC BY 3.0 )
সমাধান হল অপ্টিমাইজেশন অ্যালগরিদমে কিছু গতি যোগ করা যাতে এটি থেমে না গিয়ে স্যাডল পয়েন্ট অতিক্রম করতে পারে।
শব্দকোষ
ব্যাচ বা মিনি-ব্যাচ : প্রশিক্ষণ সর্বদা প্রশিক্ষণ ডেটা এবং লেবেলের ব্যাচগুলিতে সঞ্চালিত হয়। এটি করলে অ্যালগরিদম একত্রিত হতে সাহায্য করে। "ব্যাচ" মাত্রা সাধারণত ডেটা টেনসরের প্রথম মাত্রা। উদাহরণস্বরূপ, আকৃতির একটি টেনসর [100, 192, 192, 3] তে 192x192 পিক্সেলের 100টি ছবি থাকে যার প্রতি পিক্সেল (RGB) তিনটি মান থাকে।
ক্রস-এনট্রপি লস : একটি বিশেষ লস ফাংশন যা প্রায়শই শ্রেণিবদ্ধকরণে ব্যবহৃত হয়।
ঘন স্তর : নিউরনের একটি স্তর যেখানে প্রতিটি নিউরন পূর্ববর্তী স্তরের সমস্ত নিউরনের সাথে সংযুক্ত থাকে।
বৈশিষ্ট্য : একটি নিউরাল নেটওয়ার্কের ইনপুটগুলিকে কখনও কখনও "বৈশিষ্ট্য" বলা হয়। একটি ডেটাসেটের কোন অংশগুলি (অথবা অংশগুলির সংমিশ্রণ) একটি নিউরাল নেটওয়ার্কে ফিড করা উচিত তা নির্ধারণ করার শিল্পকে "বৈশিষ্ট্য প্রকৌশল" বলা হয়।
লেবেল : "ক্লাস" বা তত্ত্বাবধানে থাকা শ্রেণীবিভাগ সমস্যার সঠিক উত্তরের আরেকটি নাম
শেখার হার : প্রশিক্ষণ লুপের প্রতিটি পুনরাবৃত্তিতে ওজন এবং পক্ষপাত আপডেট করা গ্রেডিয়েন্টের ভগ্নাংশ।
লগিট : অ্যাক্টিভেশন ফাংশন প্রয়োগের আগে নিউরনের একটি স্তরের আউটপুটগুলিকে "লগিট" বলা হয়। এই শব্দটি "লজিস্টিক ফাংশন" অর্থাৎ "সিগময়েড ফাংশন" থেকে এসেছে যা আগে সবচেয়ে জনপ্রিয় অ্যাক্টিভেশন ফাংশন ছিল। "লজিস্টিক ফাংশনের আগে নিউরন আউটপুট" কে সংক্ষিপ্ত করে "লগিট" করা হয়েছিল।
ক্ষতি : সঠিক উত্তরের সাথে নিউরাল নেটওয়ার্ক আউটপুট তুলনা করার ত্রুটি ফাংশন
নিউরন : এর ইনপুটগুলির ওজনযুক্ত যোগফল গণনা করে, একটি পক্ষপাত যোগ করে এবং একটি অ্যাক্টিভেশন ফাংশনের মাধ্যমে ফলাফল ফিড করে।
এক-গরম এনকোডিং : ৫ এর মধ্যে ৩য় শ্রেণী ৫টি উপাদানের ভেক্টর হিসেবে এনকোড করা হয়েছে, ৩য়টি ছাড়া বাকি সকল শূন্য, যা ১।
relu : সংশোধিত রৈখিক একক। নিউরনের জন্য একটি জনপ্রিয় সক্রিয়করণ ফাংশন।
সিগময়েড : আরেকটি অ্যাক্টিভেশন ফাংশন যা আগে জনপ্রিয় ছিল এবং এখনও বিশেষ ক্ষেত্রে কার্যকর।
সফটম্যাক্স : একটি বিশেষ অ্যাক্টিভেশন ফাংশন যা একটি ভেক্টরের উপর কাজ করে, বৃহত্তম উপাদান এবং অন্যান্য সকল উপাদানের মধ্যে পার্থক্য বৃদ্ধি করে এবং ভেক্টরকে 1 এর যোগফলে স্বাভাবিক করে তোলে যাতে এটি সম্ভাব্যতার ভেক্টর হিসাবে ব্যাখ্যা করা যায়। শ্রেণিবদ্ধকরণের শেষ ধাপ হিসেবে ব্যবহৃত হয়।
টেনসর : একটি "টেনসর" একটি ম্যাট্রিক্সের মতো কিন্তু এর মাত্রার একটি নির্দিষ্ট সংখ্যক থাকে। একটি 1-মাত্রিক টেনসর হল একটি ভেক্টর। একটি 2-মাত্রিক টেনসর হল একটি ম্যাট্রিক্স। এবং তারপরে আপনার 3, 4, 5 বা তার বেশি মাত্রার টেনসর থাকতে পারে।
৪. ট্রান্সফার লার্নিং
চিত্র শ্রেণীবিভাগের সমস্যার জন্য, ঘন স্তরগুলি সম্ভবত যথেষ্ট হবে না। আমাদের কনভোলিউশনাল স্তরগুলি এবং সেগুলিকে সাজানোর বিভিন্ন উপায় সম্পর্কে শিখতে হবে।
কিন্তু আমরা একটা শর্টকাটও নিতে পারি! ডাউনলোডের জন্য সম্পূর্ণ প্রশিক্ষিত কনভোলিউশনাল নিউরাল নেটওয়ার্ক আছে। তাদের শেষ স্তর, সফটম্যাক্স ক্লাসিফিকেশন হেড কেটে আপনার নিজের স্তর দিয়ে প্রতিস্থাপন করা সম্ভব। সমস্ত প্রশিক্ষিত ওজন এবং পক্ষপাত যেমন আছে তেমনই থাকে, আপনি কেবল আপনার যোগ করা সফটম্যাক্স স্তরটিকে পুনরায় প্রশিক্ষণ দেবেন। এই কৌশলটিকে ট্রান্সফার লার্নিং বলা হয় এবং আশ্চর্যজনকভাবে, এটি ততক্ষণ পর্যন্ত কাজ করে যতক্ষণ না নিউরাল নেটটি আগে থেকে প্রশিক্ষিত করা ডেটাসেটটি আপনার ডেটাসেটের "যথেষ্ট কাছাকাছি" থাকে।
হাতে-কলমে
অনুগ্রহ করে নিচের নোটবুকটি খুলুন, কোষগুলি (Shift-ENTER) চালান এবং যেখানেই "কাজের প্রয়োজন" লেবেল দেখতে পাবেন সেখানে নির্দেশাবলী অনুসরণ করুন।
Keras Flowers transfer learning (playground).ipynb
অতিরিক্ত তথ্য
ট্রান্সফার লার্নিং এর মাধ্যমে, আপনি শীর্ষ গবেষকদের দ্বারা তৈরি উন্নত কনভোলিউশনাল নিউরাল নেটওয়ার্ক আর্কিটেকচার এবং ছবির বিশাল ডেটাসেটের উপর প্রাক-প্রশিক্ষণ উভয়ই উপভোগ করতে পারবেন। আমাদের ক্ষেত্রে আমরা ইমেজনেটে প্রশিক্ষিত একটি নেটওয়ার্ক থেকে ট্রান্সফার লার্নিং করব, যা অনেক গাছপালা এবং বাইরের দৃশ্য ধারণকারী ছবির একটি ডাটাবেস, যা ফুলের যথেষ্ট কাছাকাছি।

উদাহরণ: একটি জটিল কনভ্যুলেশনাল নিউরাল নেটওয়ার্ক ব্যবহার করে, যা ইতিমধ্যেই প্রশিক্ষিত, একটি ব্ল্যাক বক্স হিসেবে, শুধুমাত্র ক্লাসিফিকেশন হেডকে পুনরায় প্রশিক্ষণ দেওয়া হচ্ছে। এটি ট্রান্সফার লার্নিং। কনভ্যুলেশনাল স্তরগুলির এই জটিল বিন্যাসগুলি কীভাবে কাজ করে তা আমরা পরে দেখব। আপাতত, এটি অন্য কারও সমস্যা।
কেরাসে স্থানান্তর শিক্ষা
Keras-এ, আপনি tf.keras.applications.* সংগ্রহ থেকে একটি পূর্ব-প্রশিক্ষিত মডেল তৈরি করতে পারেন। উদাহরণস্বরূপ, MobileNet V2 একটি খুব ভালো কনভোলিউশনাল আর্কিটেকচার যা আকারে যুক্তিসঙ্গত থাকে। include_top=False নির্বাচন করে, আপনি চূড়ান্ত softmax স্তর ছাড়াই পূর্ব-প্রশিক্ষিত মডেলটি পাবেন যাতে আপনি আপনার নিজস্ব যোগ করতে পারেন:
pretrained_model = tf.keras.applications.MobileNetV2(input_shape=[*IMAGE_SIZE, 3], include_top=False)
pretrained_model.trainable = False
model = tf.keras.Sequential([
pretrained_model,
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(5, activation='softmax')
])
এছাড়াও pretrained_model.trainable = False সেটিংটি লক্ষ্য করুন। এটি প্রি-ট্রেনড মডেলের ওজন এবং পক্ষপাতগুলিকে স্থির করে দেয় যাতে আপনি কেবল আপনার সফটম্যাক্স স্তরকে প্রশিক্ষণ দিতে পারেন। এতে সাধারণত তুলনামূলকভাবে কম ওজন থাকে এবং এটি দ্রুত এবং খুব বড় ডেটাসেটের প্রয়োজন ছাড়াই করা যেতে পারে। তবে যদি আপনার কাছে প্রচুর ডেটা থাকে, তাহলে ট্রান্সফার লার্নিং pretrained_model.trainable = True দিয়ে আরও ভালভাবে কাজ করতে পারে। প্রি-ট্রেনড ওজনগুলি তখন চমৎকার প্রাথমিক মান প্রদান করে এবং আপনার সমস্যার সাথে আরও ভালভাবে মানানসই করার জন্য প্রশিক্ষণের মাধ্যমে এখনও সামঞ্জস্য করা যেতে পারে।
অবশেষে, লক্ষ্য করুন যে আপনার ঘন সফটম্যাক্স স্তরের আগে Flatten() স্তরটি ঢোকানো হয়েছে। ঘন স্তরগুলি ডেটার সমতল ভেক্টরগুলিতে কাজ করে কিন্তু আমরা জানি না যে পূর্ব-প্রশিক্ষিত মডেলটি এটিই ফেরত দেয় কিনা। সেই কারণেই আমাদের সমতল করা দরকার। পরবর্তী অধ্যায়ে, আমরা যখন কনভোলিউশনাল আর্কিটেকচারে ডুব দেব, তখন আমরা কনভোলিউশনাল স্তরগুলি দ্বারা ফেরত ডেটা ফর্ম্যাট ব্যাখ্যা করব।
এই পদ্ধতির মাধ্যমে আপনার প্রায় ৭৫% নির্ভুলতা অর্জন করা উচিত।
সমাধান
এখানে সমাধান নোটবুক। যদি আপনি আটকে যান তবে আপনি এটি ব্যবহার করতে পারেন।
Keras Flowers transfer learning (solution).ipynb
আমরা যা কভার করেছি
- 🤔 কেরাসে কিভাবে ক্লাসিফায়ার লিখবেন
- 🤓 একটি সফটম্যাক্স শেষ স্তর এবং ক্রস-এনট্রপি ক্ষতির সাথে কনফিগার করা হয়েছে
- 😈 শিক্ষা স্থানান্তর করুন
- 🤔 আপনার প্রথম মডেলকে প্রশিক্ষণ দেওয়া
- 🧐 প্রশিক্ষণের সময় এর ক্ষতি এবং নির্ভুলতা অনুসরণ করা
অনুগ্রহ করে একটু সময় নিয়ে এই চেকলিস্টটি আপনার মাথায় ঢোকান।
৫. অভিনন্দন!
এখন তুমি একটি কেরাস মডেল তৈরি করতে পারো। কনভোলিউশনাল স্তরগুলি কীভাবে একত্রিত করতে হয় তা শিখতে অনুগ্রহ করে পরবর্তী ল্যাবে যাও।
- TPU-গতির ডেটা পাইপলাইন: tf.data.Dataset এবং TFRecords
- [এই ল্যাব] আপনার প্রথম কেরাস মডেল, ট্রান্সফার লার্নিং সহ
- কেরাস এবং টিপিইউ সহ কনভোলিউশনাল নিউরাল নেটওয়ার্ক
- আধুনিক কনভনেট, স্কুইজনেট, এক্সসেপশন, কেরাস এবং টিপিইউ সহ
বাস্তবে টিপিইউ
ক্লাউড এআই প্ল্যাটফর্মে টিপিইউ এবং জিপিইউ পাওয়া যায়:
পরিশেষে, আমরা প্রতিক্রিয়া পেতে ভালোবাসি। এই ল্যাবে যদি কিছু ভুল দেখেন অথবা এটি উন্নত করা উচিত বলে মনে করেন, তাহলে দয়া করে আমাদের জানান। GitHub সমস্যাগুলির [ প্রতিক্রিয়া লিঙ্ক ] মাধ্যমে প্রতিক্রিয়া প্রদান করা যেতে পারে।

|

