Feedforward Neural Networks (FNN)

Machine Learning - পাইব্রেইন (PyBrain)
228
228

Feedforward Neural Networks (FNN) হল নিউরাল নেটওয়ার্কের একটি প্রাথমিক আর্কিটেকচার যা মেশিন লার্নিং এবং ডিপ লার্নিং মডেল তৈরি করার জন্য ব্যবহৃত হয়। এটি সবচেয়ে মৌলিক এবং সরল ধরনের নিউরাল নেটওয়ার্ক আর্কিটেকচার, যেখানে ডেটা একমাত্র ইনপুট লেয়ার থেকে আউটপুট লেয়ারে চলে যায়, কোনো ফিরে আসা বা সাইক্লিক্যাল পথ ছাড়াই।

Feedforward Neural Network এর মৌলিক বৈশিষ্ট্য:

  1. লেয়ার ভিত্তিক গঠন: FNN তে সাধারণত তিনটি প্রধান লেয়ার থাকে:
    • ইনপুট লেয়ার: যেখানে ডেটা প্রবাহিত হয়।
    • হিডেন লেয়ার: এক বা একাধিক হিডেন লেয়ার থাকতে পারে, যা তথ্য প্রক্রিয়াকরণ করে।
    • আউটপুট লেয়ার: যেখানে আউটপুট বা ফলাফল তৈরি হয়।
  2. নোড বা নিউরন: প্রতিটি লেয়ারের মধ্যে অনেকগুলি নিউরন বা নোড থাকে, এবং প্রতিটি নিউরন তার আগের লেয়ারের নিউরন থেকে তথ্য গ্রহণ করে এবং প্রক্রিয়া করে।
  3. ওজন (Weights): প্রতিটি সংযোগের মধ্যে ওজন থাকে, যা গুরুত্বপূর্ণ কারণ এটি নিউরাল নেটওয়ার্কে প্রাপ্ত ফলাফলকে প্রভাবিত করে। ওজনগুলো মডেল প্রশিক্ষণের সময় শিখে নেয়।
  4. এক্টিভেশন ফাংশন (Activation Function): প্রতিটি নিউরনের আউটপুট নির্ধারণে এক্টিভেশন ফাংশন ব্যবহৃত হয়, যা সাধারণত Sigmoid, ReLU (Rectified Linear Unit), Tanh বা Softmax হতে পারে।

FNN এর কাজের প্রক্রিয়া:

  1. ইনপুট: প্রথমে ইনপুট ডেটা (যেমন: চিত্র, সংখ্যা, টেক্সট) ইনপুট লেয়ারে প্রবাহিত হয়।
  2. নিউরনের অ্যালগরিদম: ইনপুট নিউরনগুলি তাদের সংযুক্ত ওজন দ্বারা ইনপুট গ্রহণ করে, এবং এর পরে এক্টিভেশন ফাংশনের মাধ্যমে প্রক্রিয়া করে।
  3. হিডেন লেয়ার: এক বা একাধিক হিডেন লেয়ারে এই তথ্য প্রক্রিয়া হয়, এবং এটি পরবর্তী স্তরের নিউরনগুলিতে পাঠানো হয়।
  4. আউটপুট: সবশেষে আউটপুট লেয়ারে পৌঁছানো তথ্যের ভিত্তিতে আউটপুট তৈরি হয়।

FNN এর বৈশিষ্ট্য:

  1. নিউরাল নেটওয়ার্কের সরল গঠন: FNN একটি সরল এবং বেসিক নিউরাল নেটওয়ার্ক আর্কিটেকচার, যা বিশেষত শিক্ষার্থীদের জন্য বুঝতে সহজ।
  2. নন-লিনিয়ারিটি: এক্টিভেশন ফাংশনের মাধ্যমে নন-লিনিয়ারিটি আসে, যা মডেলকে আরও জটিল ডেটা সম্পর্ক শিখতে সক্ষম করে।
  3. ওজন ও বায়াস: প্রতিটি নিউরন এবং সংযোগে ওজন এবং বায়াস থাকে যা মডেল ট্রেনিংয়ের সময় শিখে নেয়।
  4. ব্যাকপ্রোপাগেশন: মডেল ট্রেনিংয়ের সময়, ব্যাকপ্রোপাগেশন অ্যালগরিদম ব্যবহার করে ওজন আপডেট করা হয় যাতে আউটপুট যতটা সম্ভব সঠিক হয়।

FNN এর ব্যবহার ক্ষেত্র:

  1. ক্লাসিফিকেশন: FNN শ্রেণীকরণ (classification) সমস্যা সমাধানে ব্যাপকভাবে ব্যবহার করা হয়, যেমন ইমেজ ক্লাসিফিকেশন, স্পিচ রেকগনিশন, ইত্যাদি।
  2. রিগ্রেশন: FNN ব্যবহার করে সঠিক সংখ্যার পূর্বাভাস দেওয়া যায়, যেমন দাম পূর্বাভাস, আবহাওয়া পূর্বাভাস, ইত্যাদি।
  3. প্যাটার্ন রেকগনিশন: FNN বিভিন্ন ধরনের প্যাটার্ন চিনতে সক্ষম, যেমন চিত্র এবং টেক্সট থেকে প্যাটার্ন শিখতে।

সারাংশ

Feedforward Neural Network (FNN) হল একটি সহজ কিন্তু শক্তিশালী নিউরাল নেটওয়ার্ক আর্কিটেকচার, যা সরল ইনপুট থেকে আউটপুট পর্যন্ত তথ্য প্রবাহিত করে। এটি মেশিন লার্নিংয়ের জন্য একটি মৌলিক নকশা যা ডেটা প্রক্রিয়া করার জন্য একাধিক লেয়ারের মাধ্যমে কাজ করে। FNN সাধারণত ক্লাসিফিকেশন, রিগ্রেশন এবং প্যাটার্ন রেকগনিশনে ব্যবহৃত হয়।

Content added By

Feedforward Networks এর ধারণা

115
115

Feedforward Neural Networks (FNN) হল নিউরাল নেটওয়ার্কের একটি প্রাথমিক এবং সাধারণ ধরনের আর্কিটেকচার যা ইনপুট ডেটাকে আউটপুট ডেটাতে রূপান্তর করতে ব্যবহৃত হয়। এটি একটি প্রাথমিক নিউরাল নেটওয়ার্ক আর্কিটেকচার যা যেকোনো টাইপের ডেটার ওপর ভিত্তি করে শেখার জন্য ব্যবহৃত হতে পারে, যেমন ইমেজ, টেক্সট, সিগন্যাল ইত্যাদি।

Feedforward Networks-এ, নোড বা নিউরন গুলি বিভিন্ন স্তরে বিন্যস্ত থাকে: ইনপুট স্তর, হিডেন স্তর, এবং আউটপুট স্তর। ইনপুট ডেটা এক্স (X) ইনপুট স্তরে প্রবেশ করে এবং এটি একে একে বিভিন্ন স্তরের মাধ্যমে আউটপুট স্তরে চলে যায়।

Feedforward Network এর মূল বৈশিষ্ট্য

  1. নোড এবং লেয়ার: Feedforward নিউরাল নেটওয়ার্কে ইনপুট, হিডেন, এবং আউটপুট লেয়ার থাকে। প্রতিটি লেয়ার তার পূর্ববর্তী লেয়ার থেকে ইনপুট নেয় এবং তাকে পরবর্তী লেয়ারে পাঠায়।
  2. ডিরেক্টেড কনেকশন: প্রতিটি নোডের মধ্যে একে অপরের সাথে ডিরেক্টেড কনেকশন থাকে, যা একমাত্র আগের লেয়ার থেকে পরের লেয়ার পর্যন্ত ডেটা প্রবাহিত হতে দেয়। কোন সাইক্লিক্যাল বা রেকারেন্ট কানেকশন (backward feedback loops) থাকে না।
  3. অ্যাকটিভেশন ফাংশন: প্রতিটি নোডে একটি অ্যাকটিভেশন ফাংশন থাকে যা ইনপুটের উপর ভিত্তি করে আউটপুট তৈরি করে। সাধারণত Sigmoid, ReLU, Tanh ইত্যাদি অ্যাকটিভেশন ফাংশন ব্যবহৃত হয়।
  4. প্যারামিটার আপডেট: নেটওয়ার্ক ট্রেনিংয়ের সময়, ওজন (weights) এবং ব্যায়াস (bias) আপডেট করা হয়, যাতে নেটওয়ার্ক ইনপুট ডেটার ওপর সঠিক আউটপুট প্রদান করতে পারে।

Feedforward Network এর কাজ করার পদ্ধতি:

  1. ইনপুট স্তর: ইনপুট স্তরে, নেটওয়ার্কে প্রবেশ করা ডেটা বিভিন্ন নিউরনে (নোড) বিতরণ করা হয়। প্রতিটি ইনপুটের জন্য একটি ওজন (weight) নির্ধারিত থাকে।
  2. হিডেন স্তর: ইনপুট স্তরের ডেটা হিডেন লেয়ারে প্রক্রিয়া হয়। হিডেন লেয়ার বিভিন্ন নিউরনগুলোর মধ্যে সম্পর্ক তৈরি করে এবং সেই অনুযায়ী আউটপুট বের করে।
  3. আউটপুট স্তর: হিডেন স্তরের আউটপুট আউটপুট স্তরে পৌঁছায় এবং এটি চূড়ান্ত আউটপুট হিসেবে গণ্য হয়। এই আউটপুট ডেটা সম্ভবত পছন্দের ক্লাস (যেমন ক্লাসিফিকেশন) বা একটি নির্দিষ্ট রেগ্রেশন ভ্যালু হতে পারে।
  4. ব্যাকপ্রোপাগেশন: Feedforward নেটওয়ার্ক ট্রেনিং এর সময়, আউটপুট এবং লক্ষ্য (target) এর মধ্যে ভুল বা "লস" হিসাব করা হয়। তারপর ব্যাকপ্রোপাগেশন এলগরিদমের মাধ্যমে সেই ভুলের ভিত্তিতে ওজন আপডেট করা হয়, যাতে পরবর্তী সময়ে সেই ভুলের পুনরাবৃত্তি না ঘটে।

Feedforward Neural Network এর সুবিধা

  1. সহজ আর্কিটেকচার: Feedforward নেটওয়ার্কের আর্কিটেকচার সহজ এবং তা দ্রুত প্রশিক্ষিত হতে পারে।
  2. যেকোনো সমস্যায় প্রয়োগযোগ্য: এই ধরনের নেটওয়ার্কটি ক্লাসিফিকেশন, রিগ্রেশন, এবং অন্যান্য অনেক ধরনের সমস্যার জন্য উপযুক্ত।
  3. প্রাথমিক শিখন সমস্যা সমাধান: Feedforward Networks বিশেষভাবে এমন সমস্যার জন্য কার্যকরী যা শুধুমাত্র পূর্বের ইনপুট ডেটার উপর ভিত্তি করে সিদ্ধান্ত নেয়, যেমন ইমেজ প্রক্রিয়াকরণ।

Feedforward Network এর উদাহরণ

একটি সাধারণ 3 লেয়ার Feedforward Neural Network এর উদাহরণ দেখতে পারি:

  • ইনপুট লেয়ার: 3টি ইনপুট নিউরন (X1, X2, X3)
  • হিডেন লেয়ার: 4টি হিডেন নিউরন (H1, H2, H3, H4)
  • আউটপুট লেয়ার: 1টি আউটপুট নিউরন (Y)

প্রক্রিয়া:

  1. ইনপুট (X1, X2, X3) হিডেন লেয়ার (H1, H2, H3, H4) এর প্রতি নিউরনে প্রেরিত হয়, এবং সেখান থেকে আউটপুট Y তৈরি হয়।
  2. আউটপুট এবং লক্ষ্য আউটপুটের মধ্যে পার্থক্য হিসেবে লস গণনা করা হয়।
  3. ব্যাকপ্রোপাগেশন এলগরিদমের মাধ্যমে ওজন আপডেট করা হয়, যাতে ভবিষ্যতে ভুল কম হয়।

সারাংশ

Feedforward Neural Networks (FNN) হল নিউরাল নেটওয়ার্কের একটি সাধারণ এবং শক্তিশালী আর্কিটেকচার যা ইনপুট ডেটা থেকে আউটপুট উৎপন্ন করার জন্য ব্যবহৃত হয়। এতে ডেটা এক ধাপে এক লেয়ার থেকে আরেক লেয়ারে প্রবাহিত হয়, এবং এটি বিভিন্ন ধরনের মেশিন লার্নিং সমস্যা সমাধানে ব্যবহৃত হতে পারে। Feedforward নেটওয়ার্ক সহজ কিন্তু কার্যকরী মডেল, যা দ্রুত এবং কার্যকরভাবে শিখতে সক্ষম।

Content added By

Layers এবং Neurons তৈরি করা

107
107

PyBrain ব্যবহার করে আপনি সহজেই Neural Network তৈরি করতে পারেন, যেখানে Layers এবং Neurons তৈরি করা গুরুত্বপূর্ণ একটি পদক্ষেপ। নিউরাল নেটওয়ার্ক সাধারণত একাধিক লেয়ার নিয়ে গঠিত হয় এবং প্রতিটি লেয়ারে একাধিক নিউরন থাকে। নিচে PyBrain ব্যবহার করে Layers এবং Neurons তৈরি করার ধাপ এবং ধারণা দেওয়া হলো।


১. Neural Network এর ধারণা

একটি নিউরাল নেটওয়ার্ক সাধারণত তিনটি প্রধান অংশে বিভক্ত:

  1. Input Layer (ইনপুট লেয়ার): এই লেয়ারে ডেটা ইনপুট হিসেবে দেওয়া হয়।
  2. Hidden Layer (হিডেন লেয়ার): এই লেয়ারে ইনপুট ডেটা প্রসেস হয় এবং এটি সাধারণত একাধিক নিউরন নিয়ে গঠিত হয়।
  3. Output Layer (আউটপুট লেয়ার): এই লেয়ারে ফলস্বরূপ আউটপুট তৈরি হয়।

প্রতিটি লেয়ারে কিছু নির্দিষ্ট সংখ্যক Neurons (নিউরন) থাকে, যা ইনপুট ডেটা গ্রহণ করে এবং আউটপুট তৈরি করে।


২. PyBrain এ Layers এবং Neurons তৈরি করা

PyBrainNeural Network তৈরি করার জন্য আমরা buildNetwork ফাংশন ব্যবহার করতে পারি। এখানে প্রতিটি লেয়ারে কতটি নিউরন থাকবে, তা নির্ধারণ করা হয়।

২.১ Neural Network তৈরি করা

এখানে ২ ইনপুট নিউরন, ৩ হিডেন লেয়ার এবং ১ আউটপুট নিউরন নিয়ে একটি সিম্পল নিউরাল নেটওয়ার্ক তৈরি করা হচ্ছে:

from pybrain.tools.shortcuts import buildNetwork

# নিউরাল নেটওয়ার্ক তৈরি করা: 2 ইনপুট নিউরন, 3 হিডেন নিউরন, 1 আউটপুট নিউরন
network = buildNetwork(2, 3, 1)

# নিউরাল নেটওয়ার্কে কিছু ইনপুট পাঠানো
output = network.activate([0.1, 0.5])

print("Network Output: ", output)

এখানে:

  • 2: ইনপুট লেয়ারে ২টি নিউরন (যেমন, দুটি ইনপুট বৈশিষ্ট্য)।
  • 3: হিডেন লেয়ারে ৩টি নিউরন।
  • 1: আউটপুট লেয়ারে ১টি নিউরন।

৩. Layers এবং Neurons কাস্টমাইজ করা

buildNetwork ফাংশনের মাধ্যমে, আপনি নিজের প্রয়োজন অনুযায়ী লেয়ার এবং নিউরনের সংখ্যা কাস্টমাইজ করতে পারেন। এখানে একটি উদাহরণ দেওয়া হলো যেখানে ৫টি ইনপুট, ৪টি হিডেন লেয়ার এবং ২টি আউটপুট নিউরন থাকবে।

from pybrain.tools.shortcuts import buildNetwork

# কাস্টমাইজড নিউরাল নেটওয়ার্ক: 5 ইনপুট, 4 হিডেন, 2 আউটপুট নিউরন
network = buildNetwork(5, 4, 2)

# কিছু ইনপুট প্রদান
output = network.activate([0.1, 0.2, 0.3, 0.4, 0.5])

print("Network Output: ", output)

এখানে:

  • 5: ইনপুট লেয়ারে ৫টি নিউরন।
  • 4: হিডেন লেয়ারে ৪টি নিউরন।
  • 2: আউটপুট লেয়ারে ২টি নিউরন।

এই কাস্টমাইজড নেটওয়ার্কটি আরও জটিল কাজের জন্য উপযোগী হতে পারে।


৪. নিউরাল নেটওয়ার্কের লেয়ার কনফিগারেশন

PyBrain এ লেয়ার এবং নিউরন কনফিগার করতে কিছু অন্যান্য বিকল্পও রয়েছে। যেমন, আপনি নির্দিষ্টভাবে নিউরাল নেটওয়ার্ক তৈরি করার জন্য HiddenLayer এবং LinearLayer ব্যবহার করতে পারেন। নিচে একটি উদাহরণ দেওয়া হলো:

from pybrain.structure import FeedForwardNetwork, LinearLayer, SigmoidLayer
from pybrain.structure import FullConnection

# নিউরাল নেটওয়ার্ক তৈরি করা
network = FeedForwardNetwork()

# লেয়ার তৈরি
inputLayer = LinearLayer(2)  # 2 ইনপুট নিউরন
hiddenLayer = SigmoidLayer(3)  # 3 হিডেন নিউরন
outputLayer = LinearLayer(1)  # 1 আউটপুট নিউরন

# লেয়ারগুলো নেটওয়ার্কে যুক্ত করা
network.addInputModule(inputLayer)
network.addModule(hiddenLayer)
network.addOutputModule(outputLayer)

# কানেকশন তৈরি
network.addConnection(FullConnection(inputLayer, hiddenLayer))
network.addConnection(FullConnection(hiddenLayer, outputLayer))

# নেটওয়ার্কের ইনপুট এবং আউটপুট
network.sortModules()

# ইনপুটের জন্য কিছু ডেটা
output = network.activate([0.1, 0.5])
print("Network Output: ", output)

এখানে:

  • LinearLayer: এটি একটি লিনিয়ার এক্টিভেশন ফাংশন ব্যবহার করে।
  • SigmoidLayer: এটি একটি সিগময়েড এক্টিভেশন ফাংশন ব্যবহার করে, যা নিউরাল নেটওয়ার্কে সাধারণত ব্যবহার হয়।

সারাংশ

PyBrainLayers এবং Neurons তৈরি করার জন্য buildNetwork ফাংশন বা ম্যানুয়াল লেয়ার কনফিগারেশন ব্যবহার করা যায়। আপনি আপনার প্রয়োজন অনুযায়ী ইনপুট, হিডেন এবং আউটপুট লেয়ারে নিউরনের সংখ্যা নির্ধারণ করতে পারেন এবং সেগুলি কাস্টমাইজ করতে পারেন। PyBrain এর সাহায্যে নিউরাল নেটওয়ার্ক তৈরির প্রক্রিয়া সহজ এবং কার্যকর।

Content added By

মডেল Training এবং Evaluation

122
122

PyBrain একটি শক্তিশালী লাইব্রেরি যা মেশিন লার্নিং মডেল তৈরি, ট্রেনিং এবং মূল্যায়ন করার জন্য বিভিন্ন সরঞ্জাম সরবরাহ করে। এখানে আমরা মডেল ট্রেনিং এবং মূল্যায়ন (evaluation) সম্পর্কিত প্রক্রিয়াগুলি আলোচনা করব।


১. মডেল Training (প্রশিক্ষণ)

মডেল ট্রেনিং বা প্রশিক্ষণ হল সেই প্রক্রিয়া যেখানে একটি মডেল ডেটার উপর ভিত্তি করে শিখে এবং তার আউটপুট নির্ধারণ করে। PyBrain এ মডেল ট্রেনিং সাধারণত Trainer ক্লাস ব্যবহার করে করা হয়, বিশেষভাবে BackpropTrainer ব্যবহার করে।

১.১ Trainer ক্লাস (মডেল ট্রেনিং)

PyBrain এর Trainer ক্লাস ডেটা সেট থেকে মডেল শিখতে সাহায্য করে। এই ক্লাসটি মডেল ট্রেনিংয়ের জন্য সাধারণ কাজগুলি যেমন ফিডফরওয়ার্ড পাস, ব্যাকপ্রপাগেশন, এবং গ্রেডিয়েন্ট আপডেট করে।

১.২ BackpropTrainer ব্যবহার করে ট্রেনিং

Backpropagation হল সবচেয়ে জনপ্রিয় ট্রেনিং অ্যালগরিদম যা নিউরাল নেটওয়ার্কে ব্যাকওয়ার্ড পাস করে ওজন আপডেট করে।

উদাহরণ:
from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import ClassificationDataSet
from pybrain.supervised import BackpropTrainer

# ডেটাসেট তৈরি করা (ইনপুট ও আউটপুট)
ds = ClassificationDataSet(2, 1)  # 2 ইনপুট ফিচার এবং 1 আউটপুট
ds.addSample([0.1, 0.2], [0])
ds.addSample([0.3, 0.4], [1])
ds.addSample([0.5, 0.6], [0])
ds.addSample([0.7, 0.8], [1])

# নিউরাল নেটওয়ার্ক তৈরি করা (2 ইনপুট, 3 হিডেন, 1 আউটপুট)
network = buildNetwork(2, 3, 1)

# ট্রেনার তৈরি করা
trainer = BackpropTrainer(network, dataset=ds)

# ট্রেনিং করা
trainer.trainEpochs(1000)  # 1000 ইপোকস

# মডেল আউটপুট পরীক্ষা
print("Trained Network Output: ", network.activate([0.1, 0.2]))

এখানে:

  • ds হল একটি ClassificationDataSet যা ইনপুট এবং আউটপুট ডেটা ধারণ করে।
  • buildNetwork ফাংশনটি একটি নিউরাল নেটওয়ার্ক তৈরি করে।
  • BackpropTrainer ক্লাসটি ব্যাকপ্রপাগেশন অ্যালগরিদমের মাধ্যমে মডেলটিকে ট্রেন করে।

১.৩ Epochs এবং Batch Processing

  • Epoch হল একটি একক ট্রেনিং চক্র, যেখানে মডেল সমস্ত ডেটা দেখার পরে একটি পাস সম্পন্ন করে।
  • Batch Processing এর মাধ্যমে একাধিক স্যাম্পল একসাথে ট্রেন করা হয়।

২. মডেল Evaluation (মূল্যায়ন)

মডেল মূল্যায়ন হল সেই প্রক্রিয়া যেখানে মডেলটির কার্যকারিতা পরিমাপ করা হয়। এটি সাধারণত মডেলের ট্রেনিং শেষে করা হয়, যেখানে মডেলটির আউটপুট এবং প্রকৃত আউটপুটের সাথে তুলনা করা হয়।

২.১ Evaluation Metrics

মডেল মূল্যায়ন করার জন্য বিভিন্ন মেট্রিক্স ব্যবহৃত হয়:

  • Accuracy: এটি দেখায় মডেলটি সঠিকভাবে কতটি আউটপুট প্রেডিক্ট করেছে।
  • Confusion Matrix: এটি প্রকৃত এবং পূর্বাভাস করা ক্লাসগুলির মধ্যে সম্পর্কের একটি টেবিল।
  • Mean Squared Error (MSE): এটি মূলত রিগ্রেশন মডেলের জন্য ব্যবহৃত হয় এবং এটি আউটপুটের সাথে প্রকৃত মানের পার্থক্য মাপতে সাহায্য করে।

২.২ PyBrain এ Evaluation

PyBrain এ সাধারণত ClassificationDataSet বা RegressionDataSet থেকে মডেল মূল্যায়ন করা হয়। এখানে আমরা Accuracy এবং MSE গণনা করার একটি উদাহরণ দেখবো:

উদাহরণ: Accuracy মাপা
from pybrain.datasets import ClassificationDataSet
from pybrain.supervised import BackpropTrainer

# ডেটাসেট তৈরি
ds = ClassificationDataSet(2, 1)
ds.addSample([0.1, 0.2], [0])
ds.addSample([0.3, 0.4], [1])
ds.addSample([0.5, 0.6], [0])
ds.addSample([0.7, 0.8], [1])

# নিউরাল নেটওয়ার্ক তৈরি
network = buildNetwork(2, 3, 1)

# ট্রেনার তৈরি
trainer = BackpropTrainer(network, dataset=ds)

# মডেল ট্রেনিং
trainer.trainEpochs(1000)

# সঠিক আউটপুট গণনা
correct = 0
for inp, target in ds:
    output = network.activate(inp)
    if round(output[0]) == target[0]:
        correct += 1

accuracy = correct / len(ds) * 100
print("Accuracy: ", accuracy, "%")
উদাহরণ: Mean Squared Error (MSE)
import numpy as np

# Mean Squared Error (MSE) গণনা করা
mse = np.mean((network.activateOnDataset(ds) - ds['target'])**2)
print("Mean Squared Error: ", mse)

সারাংশ

  • মডেল ট্রেনিং: PyBrain এ BackpropTrainer ব্যবহার করে মডেলটি ট্রেন করা হয়। ট্রেনিংয়ের জন্য ডেটাসেট এবং নিউরাল নেটওয়ার্ক কাঠামো নির্ধারণ করতে হয়।
  • মডেল মূল্যায়ন: মডেলটির কার্যকারিতা Accuracy, Confusion Matrix, বা Mean Squared Error (MSE) দিয়ে মূল্যায়ন করা হয়। এটি মডেলের আউটপুট এবং প্রকৃত আউটপুটের মধ্যে পার্থক্য পরিমাপ করতে সাহায্য করে।

এভাবে, আপনি PyBrain ব্যবহার করে আপনার মডেলটি ট্রেন করতে পারবেন এবং তার পর কার্যকারিতা মূল্যায়ন করতে পারবেন।

Content added By

PyBrain দিয়ে FNN তৈরি করার উদাহরণ

93
93

FNN (Feedforward Neural Network) হলো একটি সাধারণ নিউরাল নেটওয়ার্ক আর্কিটেকচার যেখানে ইনপুট লেয়ার থেকে আউটপুট লেয়ারে ডেটা একপথে প্রবাহিত হয় (ফিডফরওয়ার্ড)। এটি মেশিন লার্নিং সমস্যাগুলির জন্য খুবই জনপ্রিয়, যেমন ক্লাসিফিকেশন এবং রিগ্রেশন। PyBrain ব্যবহার করে একটি FNN তৈরি করার জন্য নিচে বিস্তারিত উদাহরণ দেওয়া হলো।


১. প্রয়োজনীয় লাইব্রেরি ইনপোর্ট করা

প্রথমে PyBrain এবং অন্যান্য প্রয়োজনীয় লাইব্রেরি ইনপোর্ট করতে হবে।

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import ClassificationDataSet
from pybrain.supervised import BackpropTrainer
  • buildNetwork: এটি একটি ফিডফরওয়ার্ড নিউরাল নেটওয়ার্ক তৈরি করতে ব্যবহৃত হয়।
  • ClassificationDataSet: এটি একটি ডেটাসেট তৈরি করতে ব্যবহৃত হয় যেটি ক্লাসিফিকেশন সমস্যার জন্য উপযোগী।
  • BackpropTrainer: এটি একটি ট্রেনিং টুল যা ব্যাকপ্রপাগেশন অ্যালগরিদম ব্যবহার করে নেটওয়ার্ক ট্রেনিং করবে।

২. ডেটাসেট তৈরি করা

এখানে একটি সিম্পল ক্লাসিফিকেশন ডেটাসেট তৈরি করা হচ্ছে, যেখানে দুটি ইনপুট ফিচার এবং একটি আউটপুট ফিচার থাকবে। আউটপুটটি দুটি ক্লাসের মধ্যে বিভক্ত হবে (0 অথবা 1)।

# ডেটাসেট তৈরি করা (2 ইনপুট, 1 আউটপুট)
dataset = ClassificationDataSet(2, 1)

# ডেটাসেটে কিছু উদাহরণ যোগ করা
dataset.addSample([0.1, 0.2], [1])
dataset.addSample([0.3, 0.4], [0])
dataset.addSample([0.5, 0.6], [1])
dataset.addSample([0.7, 0.8], [0])
dataset.addSample([0.9, 1.0], [1])

# ডেটাসেটকে শাফল করা
dataset._convertToOneOfMany()
  • addSample: এটি ইনপুট ডেটা এবং তার সংশ্লিষ্ট আউটপুট লেবেল যোগ করতে ব্যবহৃত হয়।
  • _convertToOneOfMany(): এটি আউটপুট লেবেলগুলিকে "one-hot" ফরম্যাটে রূপান্তরিত করে, যা ক্লাসিফিকেশন সমস্যায় ব্যবহৃত হয়।

৩. নিউরাল নেটওয়ার্ক তৈরি করা

এখন আমরা একটি ফিডফরওয়ার্ড নিউরাল নেটওয়ার্ক তৈরি করব, যেখানে ২টি ইনপুট, ৩টি হিডেন নোড এবং ১টি আউটপুট নোড থাকবে।

# নিউরাল নেটওয়ার্ক তৈরি করা (2 ইনপুট, 3 হিডেন, 1 আউটপুট)
network = buildNetwork(2, 3, 1)

এখানে:

  • 2: ইনপুট লেয়ার (২টি ইনপুট ফিচার)
  • 3: হিডেন লেয়ার (৩টি হিডেন নোড)
  • 1: আউটপুট লেয়ার (১টি আউটপুট)

৪. ট্রেইনার তৈরি করা এবং মডেল ট্রেনিং করা

এখন আমরা BackpropTrainer ব্যবহার করে নেটওয়ার্কটি ট্রেনিং করব।

# ট্রেইনার তৈরি করা
trainer = BackpropTrainer(network, dataset)

# মডেল ট্রেনিং করা
trainer.trainEpochs(1000)
  • trainEpochs(1000): এটি 1000 বার ট্রেনিং করবে, যাতে নেটওয়ার্কটি ডেটাসেটের উপর শিখতে পারে।

৫. ফলাফল পরীক্ষা করা

ট্রেনিং শেষে, আমরা নেটওয়ার্কটি কিছু নতুন ইনপুট দিয়ে পরীক্ষা করতে পারি এবং আউটপুট দেখতে পারি।

# নেটওয়ার্কের আউটপুট দেখা
output = network.activate([0.5, 0.6])
print("Output for input [0.5, 0.6]: ", output)

এখানে, আমরা network.activate() ফাংশন ব্যবহার করে নতুন ইনপুট ডেটার জন্য আউটপুট প্রাপ্তি করছি।


পুরো কোডটি একত্রে:

from pybrain.tools.shortcuts import buildNetwork
from pybrain.datasets import ClassificationDataSet
from pybrain.supervised import BackpropTrainer

# ডেটাসেট তৈরি করা (2 ইনপুট, 1 আউটপুট)
dataset = ClassificationDataSet(2, 1)
dataset.addSample([0.1, 0.2], [1])
dataset.addSample([0.3, 0.4], [0])
dataset.addSample([0.5, 0.6], [1])
dataset.addSample([0.7, 0.8], [0])
dataset.addSample([0.9, 1.0], [1])
dataset._convertToOneOfMany()

# নিউরাল নেটওয়ার্ক তৈরি করা (2 ইনপুট, 3 হিডেন, 1 আউটপুট)
network = buildNetwork(2, 3, 1)

# ট্রেইনার তৈরি করা
trainer = BackpropTrainer(network, dataset)

# মডেল ট্রেনিং করা
trainer.trainEpochs(1000)

# নেটওয়ার্কের আউটপুট দেখা
output = network.activate([0.5, 0.6])
print("Output for input [0.5, 0.6]: ", output)

সারাংশ

এই উদাহরণে, PyBrain ব্যবহার করে একটি ফিডফরওয়ার্ড নিউরাল নেটওয়ার্ক (FNN) তৈরি করা হয়েছে, যেখানে ডেটাসেট যোগ করে এবং ব্যাকপ্রপাগেশন অ্যালগরিদম ব্যবহার করে নেটওয়ার্কটি ট্রেনিং করা হয়েছে। এর মাধ্যমে একটি সহজ ক্লাসিফিকেশন সমস্যা সমাধান করা হয়েছে।

Content added By
Promotion