এই পোস্টে আমি কীভাবে তাত্ক্ষণিকভাবে একটি নিউরাল নেটওয়ার্ক মডেল তৈরি করতে এবং সাথে শুরু করার বিষয়ে আলোচনা করতে যাচ্ছি।
- প্রাথমিক সেটআপ
আমরা Keras”" নামে একটি পাইথন লাইব্রেরি ব্যবহার করতে যাচ্ছি যা নিউরাল নেটওয়ার্ক লাইব্রেরি theano theano/tensorfow” এর জন্য মোড়কের ক্লাস। এই টিউটোরিয়ালে আমরা কেরাসের ব্যাকএন্ড লাইব্রেরি হিসাবে থিয়ানো ব্যবহার করতে যাচ্ছি, যাWin/Linux/Mac কের জন্য যাতে প্রত্যেকে অনুসরণ করতে পারে।
Lets set it up
Open your terminal (cmd for windows), and type “pip install theano” install the theano python package, and then hit “pip install keras” and now we have all the packages we need for this tutorial
কিছু বিষয় যাচাই করার জন্য
অগ্রসর হওয়ার আগে আমাদের নিশ্চিত করতে হবে যে কেরারা প্রকৃতপক্ষে থিয়ানোকে ব্যাক-এন্ড টেনসরফ্লো হিসাবে ব্যবহার করার চেষ্টা করছে না কারণ আমরা কেবল থিয়ানো ইনস্টল করেছি
আমাদের উপস্থিত একটি ফাইল যাচাই করতে হবে তা পরীক্ষা করতে
/.keras/keras.json
/.keras/keras.json
উইন্ডো ব্যবহারকারীর জন্য \"। কেরাস\" ফোল্ডারটি দৃশ্যমান এবং সরাসরি উইন্ডোজ এক্সপ্লোরার ব্যবহার করে খোলা যেতে পারে
লিনাক্স / ম্যাক ব্যবহারকারীর জন্য টার্মিনাল ব্যবহার করে ফাইলটি \"ন্যানো। “nano ~/.keras/keras.json” খুলুন এটি সরাসরি ন্যানো সম্পাদক ব্যবহার করে টার্মিনালে ফাইলটি খুলবে।
ফাইলটি নিম্নলিখিত দেখাচ্ছে কিনা তা নিশ্চিত করুন
ফাইলটি নিম্নলিখিত দেখাচ্ছে কিনা তা নিশ্চিত করুন
{
"image_dim_ordering": "th",
"epsilon": 1e-07,
"floatx": "float32",
"backend": "theano"
}
সেটআপের জন্য এটিই। আমরা এখন আমাদের খুব won থাকা নিউরাল নেটওয়ার্কের কোডিং শুরু করতে পারি।
- প্রথম ডিজাইন
প্রথমে নেটওয়ার্কটির আমাদের নকশা সম্পর্কে কথা বলা যাক, এই টিউটোরিয়ালে আমরা জিনিসগুলি আরও সহজ রাখতে যাচ্ছি। সুতরাং আমরা একটি সুপার সিম্পল ডিজাইন তৈরি করছি, আমরা আমাদের পরবর্তী টিউটোরিয়ালে আরও জটিল ডিজাইন তৈরি করব।
আমরা কী করতে যাচ্ছি তার সম্পর্কে কিছুটা উপলব্ধি করা ভাল নকশাটি নীচের চিত্রের মতো দেখায়।

আপনি দেখতে পাচ্ছেন যে আমরা 3 স্তর রাখতে যাচ্ছি প্রথম একটিকে ইনপুট স্তর এবং শেষটিকে আউটপুট স্তর বলা হয়। এর মধ্যে যেটিকে কখনও লুকানো স্তর (গুলি) বলা হয়। এক্ষেত্রে আমরা 2 ইনপুট নিউরন এবং 5 টি নিউরন সহ একটি লুকানো স্তর এবং আউটপুট স্তরে 1 আউটপুট নিউরন দিয়ে ইনপুট স্তর তৈরি করতে যাচ্ছি।
[ictt-tweet-blockquote]Lets Code A Neural Network[/ictt-tweet-blockquote]
কেরাস লাইব্রেরি আমদানির মাধ্যমে আমরা শুরু করব। নেটওয়ার্কটি তৈরি করতে তার দুটি মডিউল প্রয়োজন, প্রথমটি মডেল যা নেটওয়ার্ক কাঠামো ধারণ করবে, আমরা ব্যবহার করব 'সিকোয়েনশিয়াল' যা সবচেয়ে সাধারণ। এবং 'স্তর' যা নেটওয়ার্কের বিল্ডিং ব্লক হবে। এই সাধারণ টিউটোরিয়ালে আমরা ঘন স্তরটি ব্যবহার করতে যা যা প্রাথমিক স্তর যা আমরা ডায়াগ্রামে আগে আলোচনা করেছি। এবং আমাদেরও numpay দরকার।
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
সুতরাং এটির মতো দেখাচ্ছে, মডেল নির্ধারণ করতে
এখন যেহেতু আমাদের সমস্ত উপাদান রয়েছে, আমাদের নকশা বিভাগে আলোচিত মডেল কাঠামোটি সংজ্ঞায়িত করতে হবে।
আমাদের সাথে একটি ইনপুট স্তর থাকবে একটি লুকানো স্তর এবং একটি আউটপুট স্তর, সুতরাং এটি দেখতে এটির মতো দেখাচ্ছে।
আমাদের সাথে একটি ইনপুট স্তর থাকবে একটি লুকানো স্তর এবং একটি আউটপুট স্তর, সুতরাং এটি দেখতে এটির মতো দেখাচ্ছে।
model = Sequential()
উপরের কোডে আমরা প্রথমে একটি সিক্যুয়াল মডেলকে সূচনা করেছিলাম, যাকে \"মডেল\" বলা হয়, এখন আমাদের কেবল একটি স্যান্ডউইচের লেয়ারের মতো স্তরগুলি সংযুক্ত করতে হবে, আমরা প্রথম লুকানো স্তর যুক্ত করে শুরু করি এবং সেখানে আমরা ইনপুট নিউরনের সংখ্যা এবং সংখ্যার সংজ্ঞাও দেই স্তর মধ্যে নিউরন
model.add(Dense(5, input_dim=2, activation='tanh'))
আমাদের ইনপুট স্তর তৈরি করতে হবে না, মডেল এটি স্বয়ংক্রিয়ভাবে তৈরি করবে সুতরাং আমরা প্রথম লুকানো স্তর দিয়ে শুরু করি। এটি একটি ঘন স্তর এবং আমাদের কেবল ইনপুট স্তরের ইনপুট মাত্রা (ইনপুট নিউরনের সংখ্যা) নির্দিষ্ট করতে হবে। লুকানো স্তরটিতে নিজেই 5 টি নিউরন থাকে এবং প্রতিটি স্তরের জন্য আমাদের একটি অ্যাক্টিভেশন ফাংশন প্রয়োজন (আরও বিশদ পর্যালোচনা করার জন্য আমার স্নায়ু থেকে নেটওয়ার্কটি পরীক্ষা করে দেখুন), আমরা অ্যাক্টিভেশন ফাংশন হিসাবে ‘tanh’‘তানহ’ ফাংশনটি ব্যবহার করছি।
এখন আমরা আউটপুট স্তর যুক্ত করব। এটি ইনপুট মাত্রা সম্পর্কে চিন্তা করার দরকার নেই কারণ এটি ক্রমের প্রথম স্তর নয়। এবং এটি আউটপুট স্তর এবং অ্যাক্টিভেশন ফাংশন হিসাবে \"তান\" সহ একটি মাত্র আউটপুট ধারণ করে।So the Model will look like this
model = Sequential()
model.add(Dense(5, input_dim=2, activation='tanh'))
model.add(Dense(1, activation='tanh'))
Compile The Model
মডেলটি compile করে আমি কী বোঝাতে চাইছি। প্রকৃতপক্ষে উপরের পদক্ষেপগুলিতে আমরা কেবলমাত্র মডেলের কাঠামো সংজ্ঞায়িত করেছি। এরপরে আমরা সেই মডেলটি compile করব যেখানে আমাদের দেওয়া নির্দেশনা অনুযায়ী লাইব্রেরিটি প্রকৃতপক্ষে নেটওয়ার্কটি তৈরি করবে, যতটা সম্ভব অপ্টিমাইজড ফর্ম.
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
Lets Create the Dataset
এই টিউটোরিয়ালে আমরা নিউরাল নেটওয়ার্ককে একটি XOR এক্সওআর গেটের মতো আচরণ করতে প্রশিক্ষণ দেব যাতে আমাদের ডেটাসেটে 2 বাইনারি ইনপুট বিট এবং 1 বাইনারি আউটপুট বিট থাকবে
- 1,1 -> 0
- 1,0 -> 1
- 0,1 -> 1
- 0,0 -> 0
উপরে ইনপুট এবং আউটপুট সেট রয়েছে। আমাদের মডেল বুঝতে পারে এমন ডেটা আকারে তাদের প্রস্তুত করতে দিন,
সুতরাং আমাদের নিম্নোক্ত বিন্যাসে আমাদের ডেটাসেটের মাত্রা তৈরি করতে হবে
ইনপুট আকার = (মোট নমুনার সংখ্যা, ইনপুটগুলির সংখ্যা)
আউটপুট আকৃতি = (মোট নমুনার সংখ্যা, আউটপুট সংখ্যা)
সুতরাং আমাদের নিম্নোক্ত বিন্যাসে আমাদের ডেটাসেটের মাত্রা তৈরি করতে হবে
ইনপুট আকার = (মোট নমুনার সংখ্যা, ইনপুটগুলির সংখ্যা)
আউটপুট আকৃতি = (মোট নমুনার সংখ্যা, আউটপুট সংখ্যা)
- input shape =(number of total samples, number of inputs )
- output shape =(number of total samples, number of outputs )
which is in our case it will be যা আমাদের ক্ষেত্রে এটি হবে
- input shape= (4,2)
- output shape= (4,1)
কোডটি এর মতো দেখবে
# Preparing Inputs
input=[]
input.append([0,0])
input.append([0,1])
input.append([1,0])
input.append([1,1])
#converting Input variable from list to numpy array
input=np.asarray(input)
#Preparing corresponding Outputs
output=[]
output.append([0])
output.append([1])
output.append([1])
output.append([0])
#Converting list to numpy array
output=np.asarray(output)
মডেল প্রশিক্ষণ
এখন যেহেতু আমরা প্রশিক্ষণের সেট প্রস্তুত করেছি, আমরা মডেলটিকে প্রশিক্ষণ দিতে শুরু করতে পারি
model.fit(input,output,shuffle=True, nb_epoch=200, batch_size=4)
উপরের কোডটিতে “nb_epoch” নির্দেশ করে যে আমরা মোট সেটটি আবার কতবার চালাতে চাইছি, “batch_size” একটি শটে প্রশিক্ষণের জন্য নমুনার সংখ্যা। বাকি পরামিতিগুলি স্ব-ব্যাখ্যামূলক। এখন আমরা ফলাফল পরীক্ষা করতে পারেন।
- মডেলকে পরীক্ষা
আমরা মডেলকে প্রশিক্ষণ দিয়েছি, সুতরাং এটি পরীক্ষা করার সময় এসেছে,
#Testing with input 1,1 / Expected Output is 0
input=[[1,1]]
input=np.asarray(input)
output=model.predict(input)
print output[0]
[ictt-tweet-blockquote]Complete Neural Network Code[/ictt-tweet-blockquote]
নীচে এই টিউটোরিয়ালের সম্পূর্ণ কোডটি দেওয়া হয়েছে, মজা করুন এবং দয়া করে মন্তব্য করুন যদি আপনার কোনও সন্দেহ থাকে তবে আমি উত্তর দিতে খুশি হব।
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
model = Sequential()
model.add(Dense(5, input_dim=2, activation='tanh'))
model.add(Dense(1, activation='tanh'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Preparing Inputs
inputSet=[]
inputSet.append([0,0])
inputSet.append([0,1])
inputSet.append([1,0])
inputSet.append([1,1])
#converting Input variable from list to numpy array
inputSet=np.asarray(inputSet)
#Preparing corresponding Outputs
output=[]
output.append([0])
output.append([1])
output.append([1])
output.append([0])
#Converting list to numpy array
output=np.asarray(output)
#training the model
model.fit(inputSet,output,shuffle=True, nb_epoch=200, batch_size=4)
#Testing with input 1,1 / Expected Output is 0
inputSet=[[1,1]]
inputSet=np.asarray(inputSet)
output=model.predict(inputSet)
print "Output of 1,1"
print (output[0]);
Output

আপনি দেখতে পাচ্ছেন আউটপুট -0.00012 যা 0 এর খুব কাছাকাছি হয় তাই এটি মোটামুটি গ্রহণযোগ্য।
0 comments:
Post a Comment