Basic, again? – নিউরাল নেটওয়ার্ক

আজকে আমরা শুধুমাত্র কিছু হাইপার-প্যারামিটার সম্পর্কে জানব। মডেল ট্রেনিং এবং টেস্টিং এর জন্য যেগুলো জানা অনেক বেশি জরুরী।

ট্রেনিং ডেটাঃ মডেল মূলত এই ডেটা থেকেই শিখে থাকে। ট্রেনিং ডেটা হিসেবে আপনাকে দুইটা array দিতে হবে। একটাতে শুধুমাত্র ফিচারগুলো থাকবে। অন্যটাতে শুধুমাত্র টার্গেট/ক্লাস/লেবেল গুলো থাকবে। এলোমেলো থাকে যাবে না। ফিচার array এর ইনডেক্স এর সাথে ওই ফিচারের ক্লাস নেমও একই ইনডেক্সে থাকতে হবে। ভুল ডেটা দিবেন মানে আপনার মডেলকে ভুল শেখাচ্ছেন।

epochঃ আপনি একই ডেটা দিয়ে কতবার আপনার মডেলকে শেখাবেন তার সংখ্যা। epoch যদি ১০০ হয়, তার মানে আপনার মডেল ১০০ বার একই ট্রেনিং ডেটা এনালাইসিস করে weights গুলো অপটিমাইজ করার চেষ্টা করবে। এটাকে আপনি একটা লুপের সাথে তুলনা করতে পারেন।

validation_dataঃ ভ্যালিডেশন ডেটা তেও আপনাকে ২ টা array দিতে হবে। ট্রেনিং ডেটার মত একদম সেইম। আপনার মডেল প্রতি ইপোকের শেষে ভ্যালিডেশন ডেটা দিয়ে চেক করবে যে ভ্যালিডেশন লস কেমন এবং একুরেসি(ডিপেন্ডস) কেমন। কিন্তু এই ডেটা আপনার মডেল ট্রেনিংয়ের জন্য ব্যবহার করবে না।

callbacksঃ ধরুন আপনি ১০০ ইপোক সেট করে দিয়েছেন। কিন্তু ৩০টার পরে গিয়ে কোন উন্নতি নেই । লস ভ্যালু আর কমছে না। এক্ষেত্রে আপনি callbacks এর প্যারামিটার ব্যবহার করে বলে দিতে পারেন যে টানা ৫টা ইপোকেও যদি লস না কমে তাহলে যেন ট্রেনিং বন্ধ হয়ে যায়। আপনি এই ৫ টার বদলে যেকোন সংখ্যা দিতে পারবেন। এটাকে বলা হয় EarlyStopping। আবার আপনি ট্রেনিং এর সময় লক্ষ্য করলেন যে ৬৫তম এপোকে ভ্যালিডেশন লস ভ্যালু সব থেকে কম কিন্তু ১০০তে গিয়ে আরেকটু বেশি হয়ে গেছে। আপনি চাচ্ছেন সবথেকে কম লস ভ্যালুর মডেলটা সেভ করতে। এক্ষেত্রে আপনি save_best_only ব্যবহার করে সহজেই সেটা করতে পারেন।

batch_sizeঃ ট্রেনিংয়ের সময় মডেল ট্রেনিং ডেটাগুলো কয়েকটা ব্যাচে ভেঙ্গে ভেঙ্গে আলাদা করে ট্রেনিং করে। ব্যাচ সাইজ এর মাধ্যমে আপনি বলে দিতে পারেন যে ব্যাচগুলোর সাইজ কত হবে। ব্যাচ সাইজ বেশি হওয়া ভালো। তবে যতটুকু আপনার কম্পিউটারের মেমোরি নিতে পারে ততটুকুই দিবেন।

steps_per_epochঃ আমরা ব্যাচ সাইজ সম্পর্কে জানি। steps_per_epoch হলো কতগুলো ব্যাচ আছে তার সংখ্যা। ধরুন আপনার ট্রেনিং ইমেজের সংখ্যা ২০০০টি। আপনি ব্যাচ সাইজ দিয়েছেন ৫০। তাহলে steps_per_epoch হবে ২০০০/৫০=৪০। ঐকিক নিয়ম।

verboseঃ আপনার মডেলের ট্রেনিং এর লাইভ পারফরমেন্স দেখার উপায়। আপনি যদি verbose=0 সেট করে দেন, তাহলে মডেল ট্রেনিং হবে কিন্তু আপনাকে কোন কিছুই দেখাবে না। আর যদি verbose=2 সেট করে দেন তাহলে প্রতিটি লাইনে প্রতিটা ইপোকের তথ্য দেখাবে। ট্রেনিং লস, ভ্যালিডেশন লস ইত্যাদি।

কিছু মিস হয়ে গেলে জানাবেন, পরবর্তীতে যোগ করে দিবো।


One thought on “Basic, again? – নিউরাল নেটওয়ার্ক”

  1. Ashiq says:

    Very Informative

Leave a Reply

Your email address will not be published. Required fields are marked *