নিউরাল নেটওয়ার্ক গভীর শিক্ষার খুব গুরুত্বপূর্ণ কেন্দ্র; এটি বিভিন্ন এলাকায় অনেক ব্যবহারিক অ্যাপ্লিকেশন আছে. বর্তমানে এই নেটওয়ার্কগুলি ইমেজ ক্লাসিফিকেশন, স্পিচ রিকগনিশন, অবজেক্ট ডিটেকশন ইত্যাদির জন্য ব্যবহার করা হয়।
আসুন জেনে নেই এটি কী এবং এটি কীভাবে কাজ করে?
এই নেটওয়ার্কের বিভিন্ন উপাদান রয়েছে। তারা নিম্নরূপ -
- একটি ইনপুট স্তর, x
- লুকানো স্তরগুলির একটি নির্বিচারে পরিমাণ
- একটি আউটপুট স্তর, ŷ
- প্রতিটি স্তরের মধ্যে ওজন এবং পক্ষপাতের একটি সেট যা W এবং b দ্বারা সংজ্ঞায়িত করা হয়েছে
- পরবর্তী হল প্রতিটি লুকানো স্তরের জন্য সক্রিয়করণ ফাংশনের একটি পছন্দ, σ.
এই চিত্রটিতে 2-স্তর নিউরাল নেটওয়ার্ক উপস্থাপন করা হয়েছে (নিউরাল নেটওয়ার্কে স্তরের সংখ্যা গণনা করার সময় ইনপুট স্তরটি সাধারণত বাদ দেওয়া হয়)
এই গ্রাফে, চেনাশোনাগুলি নিউরনের প্রতিনিধিত্ব করছে এবং রেখাগুলি সিন্যাপ্সের প্রতিনিধিত্ব করছে। সিন্যাপ্সগুলি ইনপুট এবং ওজন গুণ করতে ব্যবহৃত হয়। আমরা ওজনকে নিউরনের মধ্যে সংযোগের "শক্তি" হিসাবে মনে করি। ওজন একটি নিউরাল নেটওয়ার্কের আউটপুট সংজ্ঞায়িত করে।
একটি সাধারণ ফিড ফরোয়ার্ড নিউরাল নেটওয়ার্ক কীভাবে কাজ করে তার একটি সংক্ষিপ্ত বিবরণ এখানে দেওয়া হল −
আমরা যখন ফিড ফরোয়ার্ড নিউরাল নেটওয়ার্ক ব্যবহার করি, তখন আমাদের কিছু ধাপ অনুসরণ করতে হয়।
-
প্রথমে একটি ম্যাট্রিক্স হিসাবে ইনপুট নিন (সংখ্যার 2D অ্যারে)
-
এরপরে একটি সেট ওজন দ্বারা ইনপুটকে গুণ করা হয়।
-
পরবর্তীতে একটি অ্যাক্টিভেশন ফাংশন প্রযোজ্য হয়৷
৷ -
একটি আউটপুট ফেরত দিন।
-
পরবর্তী ত্রুটি গণনা করা হয়, এটি ডেটা থেকে পছন্দসই আউটপুট এবং পূর্বাভাসিত আউটপুটের মধ্যে পার্থক্য।
-
এবং ত্রুটি অনুযায়ী ওজন সামান্য পরিবর্তন হয়।
-
প্রশিক্ষণের জন্য, এই প্রক্রিয়াটি 1,000+ বার পুনরাবৃত্তি করা হয় এবং যত বেশি ডেটা প্রশিক্ষণ দেওয়া হয়, আমাদের আউটপুট তত বেশি নির্ভুল হবে৷
ঘন্টা অধ্যয়ন, ঘন্টা ঘুম (ইনপুট) পরীক্ষার স্কোর (আউটপুট)
2, 9921, 5863, 6894, 8?
উদাহরণ কোড
numpy import exp, array, random, dot, tanhclass my_network():def __init__(self):random.seed(1) # 3x1 ওজন ম্যাট্রিক্স self.weight_matrix =2 * random.random((3, 1) থেকে ) - 1 defmy_tanh(self, x):ফেরত tanh(x) defmy_tanh_derivative(self, x):ফেরত 1.0 - tanh(x) ** 2 # ফরোয়ার্ড প্রচার defmy_forward_propagation(self, inputs):return self.my_tanh(dot(inputs):, self.weight_matrix)) # নিউরাল নেটওয়ার্ক প্রশিক্ষণ। deftrain(self, train_inputs, train_outputs, num_train_iterations):পরিসরে পুনরাবৃত্তির জন্য(num_train_iterations):output =self.my_forward_propagation(train_inputs) # আউটপুটে ত্রুটি গণনা করুন। ত্রুটি =ট্রেন_আউটপুট - আউটপুট সামঞ্জস্য =ডট(ট্রেন_ইনপুটস.টি, ত্রুটি *self.my_tanh_derivative(আউটপুট)) # ওজন ম্যাট্রিক্স স্বয়ং সামঞ্জস্য করুন.weight_matrix +=সমন্বয় # ড্রাইভার কোড যদি __name__ =="__main__":my_neural =my_network(print) ('প্রশিক্ষণ শুরু হলে এলোমেলো ওজন') প্রিন্ট (my_neural.weight_matrix) ট্রেন_ইনপুট =অ্যারে([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]]) train_outputs =array([[0, 1, 1, 0]]).T my_neural.train(train_inputs, train_outputs, 10000) প্রিন্ট ('প্রশিক্ষণের পরে নতুন ওজন প্রদর্শন করা') প্রিন্ট (my_neural.weight_matrix) # পরীক্ষা একটি নতুন পরিস্থিতি সহ নিউরাল নেটওয়ার্ক। প্রিন্ট ("নতুন উদাহরণে নেটওয়ার্ক টেস্টিং ->")প্রিন্ট (my_neural.my_forward_propagation(array([1, 0, 0])))
আউটপুট
প্রশিক্ষণ শুরু হলে এলোমেলো ওজন[[-0.16595599][ 0.44064899][-0.99977125]]প্রশিক্ষণের পর নতুন ওজন প্রদর্শন করা হচ্ছে[[5.39428067][0.19482422][0.34317086][0.34317086]90 টি নেটওয়ার্কে সবচেয়ে নতুন উদাহরণ দেওয়া হচ্ছে [90>টি]90-7]90> প্রাক>