कृत्रिम बुद्धि और मशीन सीखने के क्षेत्र में तंत्रिका नेटवर्क एक महत्वपूर्ण अवधारणा है। वे आपस में जुड़े हुए नोड्स से बने होते हैं, परतों में व्यवस्थित होते हैं, और मानव मस्तिष्क कैसे काम करते हैं, इसकी नकल करते हैं। नोड्स मानव मस्तिष्क के न्यूरॉन्स का प्रतिनिधित्व करते हैं।
आप अपना स्वयं का सरल फ़ीड-फ़ॉरवर्ड, बहु-श्रेणी वर्गीकरण तंत्रिका नेटवर्क बना सकते हैं। इसे MNIST डेटासेट का उपयोग करके हस्तलिखित अंकों को वर्गीकृत करने के लिए प्रशिक्षित करें। फिर आप अपने स्वयं के हस्तलिखित अंकों को वर्गीकृत करने के लिए कंप्यूटर विज़न का उपयोग कर सकते हैं।
मल्टी-क्लास वर्गीकरण क्या है?
मल्टी-क्लास वर्गीकरण एक प्रकार की मशीन लर्निंग है जो डेटा को दो से अधिक श्रेणियों में वर्गीकृत कर सकती है। तंत्रिका नेटवर्क संभावित वर्गों पर संभाव्यता वितरित करने के लिए सॉफ्टमैक्स क्लासिफायर का उपयोग करते हैं।
आप MNIST डेटासेट से हस्तलिखित छवियों को 10 श्रेणियों में वर्गीकृत करने के लिए बहु-श्रेणी वर्गीकरण का उपयोग कर सकते हैं। ये श्रेणियां 0 से 9 अंकों के अनुरूप होंगी।
MNIST डेटासेट को समझना
MNIST डेटासेट मशीन लर्निंग और कंप्यूटर विज़न एल्गोरिदम के लिए एक लोकप्रिय बेंचमार्क डेटासेट है। इसमें 70,000 ग्रेस्केल हस्तलिखित छवियां हैं जो आकार में 28 गुणा 28 पिक्सेल हैं। हस्तलिखित अंक 0 से 9 की सीमा में हैं।
कोई भी मशीन लर्निंग मॉडल बनाने से पहले, यह समझना ज़रूरी है कि आपके डेटासेट में क्या है। डेटासेट को समझने से आप बेहतर डेटा प्रीप्रोसेसिंग कर पाएंगे।
अपना पर्यावरण तैयार करना
इस ट्यूटोरियल का अनुसरण करने के लिए, आपको इससे परिचित होना चाहिए पायथन की मूल बातें. आपके पास भी होना चाहिए मशीन सीखने का बुनियादी ज्ञान. अंत में, आपको Jupyter Notebook या Google Colab का उपयोग करने में सहज होना चाहिए।
पूर्ण स्रोत कोड a में उपलब्ध है गिटहब रिपॉजिटरी.
एक नया ज्यूपिटर नोटबुक बनाएं या इसमें साइन इन करें गूगल कोलाब. आवश्यक पैकेजों को स्थापित करने के लिए यह कमांड चलाएँ:
!पिप संस्थापित numpy matplotlib Tensorflow opencv-python
आप प्रयोग करेंगे:
- डेटा विज़ुअलाइज़ेशन के लिए Matplotlib।
- सरणियों में हेरफेर करने के लिए NumPy।
- अपने मॉडल को बनाने और प्रशिक्षित करने के लिए TensorFlow।
- अपने स्वयं के हस्तलिखित अंकों के साथ मॉडल को फीड करने के लिए OpenCV।
आवश्यक मॉड्यूल आयात करना
आपके द्वारा अपने वातावरण में स्थापित किए गए पैकेजों को आयात करें। यह आपको बाद में कॉल करने और अपने कोड में उनके कार्यों और मॉड्यूल का उपयोग करने की अनुमति देगा।
आयात tensorflow जैसा tf
से tensorflow आयात keras
आयात matplotlib.pyplot जैसा पठार
%matplotlib इनलाइन
आयात Numpy जैसा एनपी
आयात cv2
कोड की दूसरी पंक्ति केरस मॉड्यूल को आयात करती है Google टेंसरफ्लो लाइब्रेरी. आप बैकएंड के रूप में TensorFlow के साथ अपने गहरे तंत्रिका नेटवर्क को प्रशिक्षित करने के लिए Keras का उपयोग करेंगे।
डेटासेट लोड करना और देखना
MNIST डेटासेट Keras में बनाया गया है। MNIST डेटासेट लोड करें और इसे प्रशिक्षण और परीक्षण सेटों में विभाजित करें। आप नई अनदेखी छवियों को वर्गीकृत करने में अपने मॉडल की सटीकता का मूल्यांकन करने के लिए अपने मॉडल और परीक्षण सेट को प्रशिक्षित करने के लिए प्रशिक्षण सेट का उपयोग करेंगे।
(X_train, y_train), (X_test, y_test) = keras.datasets.mnist.load_data()
प्रशिक्षण और परीक्षण सेट की लंबाई की जाँच करें। MNIST डेटासेट में प्रशिक्षण के लिए 60,000 चित्र और परीक्षण के लिए 10,000 चित्र हैं।
लेन (X_train)
लेन (X_परीक्षण)
MNIST डेटासेट में पहली छवि के आकार की जाँच करें जो 28 x 28 पिक्सेल की होनी चाहिए। फिर इसके पिक्सेल मान प्रिंट करें और Matplotlib का उपयोग करके इसकी कल्पना करें।
एक्स_ट्रेन[0]।आकार
एक्स_ट्रेन[0]
plt.matshow (X_train[0])
वाई_ट्रेन [0]
विज़ुअलाइज़ेशन आउटपुट इस प्रकार है:
विज़ुअलाइज़ की गई इमेज से पता चलता है कि डेटासेट की पहली इमेज में नंबर पांच है।
डेटा प्रीप्रोसेसिंग
अपने मॉडल को प्रशिक्षित और परीक्षण करने के लिए डेटासेट में डेटा का उपयोग करने से पहले, आपको इसे प्रीप्रोसेस करना होगा। प्रीप्रोसेसिंग डेटा को मानकीकृत करके मॉडल की सटीकता को बढ़ाता है।
पिक्सेल मानों को सामान्य करना
प्रत्येक मान को 255 से विभाजित करके डेटासेट में छवियों के पिक्सेल मानों को सामान्य करें। असामान्य डेटासेट का पिक्सेल मान 0 से 255 तक होता है जिसमें शून्य काला और 255 सफेद होता है। प्रत्येक पिक्सेल मान को 255 से विभाजित करने पर यह सुनिश्चित होता है कि प्रत्येक पिक्सेल 0 और 1 के बीच की सीमा में है। इससे मॉडल के लिए डेटा में प्रासंगिक सुविधाओं और पैटर्न को सीखना आसान हो जाता है।
एक्स_ट्रेन = एक्स_ट्रेन / 255
एक्स_टेस्ट = एक्स_टेस्ट / 255
फिर पहली छवि के पिक्सेल मान प्रिंट करें।
एक्स_ट्रेन[0]
ध्यान दें कि वे अब 0 और 1 के बीच की सीमा में हैं।
इमेज मैट्रिसेस को 1D ऐरे में बदलना
तंत्रिका नेटवर्क की इनपुट परत आमतौर पर 1D इनपुट की अपेक्षा करती है, इसलिए छवि के पिक्सेल मानों की 1D सरणी बनाएं। ऐसा करने के लिए, डेटासेट में छवियों की संख्या पर सेट रॉ की संख्या के साथ रीशेप () फ़ंक्शन का उपयोग करें।
X_train_flattened = X_train.reshape (लेन (X_train), 28 * 28)
X_test_flattened = X_test.reshape (लेन (X_test), 28 * 28)
X_train_flattened.shape
X_train_चपटा [0]
आपकी छवियां अब मॉडल को प्रशिक्षित करने और परीक्षण करने के लिए तैयार हैं।
डीप न्यूरल नेटवर्क मॉडल बनाना
एक इनपुट लेयर, दो हिडन लेयर्स और एक आउटपुट लेयर का उपयोग करके Tensorflow के Keras मॉड्यूल के साथ एक अनुक्रमिक मॉडल बनाएं। इनपुट आकार को 28 गुणा 28 पर सेट करें क्योंकि यह डेटासेट में मूल छवियों का आकार है। छिपी हुई परतों के लिए 128 नोड्स का प्रयोग करें। आउटपुट लेयर में केवल 10 न्यूरॉन्स होने चाहिए क्योंकि आप केवल 0 से 9 अंकों को वर्गीकृत कर रहे हैं।
मॉडल = केरस। अनुक्रमिक([
keras.layers. चपटा (input_shape=(28, 28)),keras.layers. सघन(128, सक्रियण ='रेलु'),
keras.layers. सघन(128, सक्रियण ='रेलु'),
keras.layers. सघन(10, सक्रियण ='सॉफ्टमैक्स')
])
मॉडल का उपयोग करके संकलित करें एडम अनुकूलक, sparse_categorical_crossentropy हानि फ़ंक्शन के रूप में, और मीट्रिक के रूप में मॉडल के प्रदर्शन का मूल्यांकन करने के लिए शुद्धता. फिर प्रशिक्षण डेटा को मॉडल में फिट करें और युगों की संख्या को पांच पर सेट करें।
मॉडल.कंपाइल (ऑप्टिमाइज़र ='एडम',
हानि ='sparse_categorical_crossentropy',
मेट्रिक्स = ['शुद्धता'])
मॉडल.फिट (X_train, y_train, epochs=5)
मॉडल को प्रशिक्षित होने में कुछ मिनट लगेंगे। मॉडल प्रशिक्षण समाप्त होने के बाद, परीक्षण सेट पर इसके प्रदर्शन का मूल्यांकन करें।
मॉडल.मूल्यांकन (X_test, y_test)
मूल्यांकन समारोह मॉडल की हानि और सटीकता लौटाएगा। मॉडल 98% की सटीकता पैदा करता है।
अपने स्वयं के हस्तलिखित अंकों को वर्गीकृत करने के लिए मॉडल का उपयोग करना
अपने स्वयं के हस्तलिखित अंकों को वर्गीकृत करने के लिए, आपको अपनी छवियों को MNIST डेटासेट से मिलान करने के लिए तैयार करने की आवश्यकता है। ऐसा करने में विफल रहने पर आपके मॉडल का प्रदर्शन खराब हो जाएगा।
छवियों को प्रीप्रोसेस करने के लिए:
- OpenCV का उपयोग करके अंक वाली छवि लोड करें।
- इसे ग्रेस्केल में बदलें और इसका आकार बदलकर 28 गुणा 28 पिक्सेल कर दें।
- पिक्सेल मानों को पलटें और सामान्य करें।
- अंत में, छवि को 1D सरणी में समतल करें।
भविष्यवाणी के लिए मॉडल में प्रीप्रोसेस्ड इमेज पास करें और स्क्रीन पर अनुमानित मूल्य प्रिंट करें।
img = cv2.imread ('अंक/अंक1.png', cv2.IMREAD_GRAYSCALE)
img_resize = cv2.resize (आईएमजी, (28, 28))
img_flip = cv2.bitwise_not (img_resize)
img_सामान्यीकृत = img_flip.astype('फ्लोट32') / 255.0# छवि को 1D सरणी में समतल करें
input_data = img_normalized.flatten ()। फिर से आकार देना ( 1,28,28)
# मॉडल का उपयोग करके भविष्यवाणी करें
भविष्यवाणी = model.predict (input_data)
छपाई (एफ भविष्यवाणी: {np.argmax (भविष्यवाणी)}')
एक पूर्व-संसाधित छवि को मॉडल में भेजना जिसमें एक संख्या होती है।
मॉडल का आउटपुट इस प्रकार है:
मॉडल अंक सात को सही ढंग से वर्गीकृत करने में सक्षम था।
चैटबॉट्स में तंत्रिका नेटवर्क
पिछले कुछ वर्षों में तंत्रिका नेटवर्क का उपयोग विस्फोट हो गया है। वे मुख्य रूप से भाषा अनुवाद और जनरेटिव एआई के लिए प्राकृतिक भाषा प्रसंस्करण में उपयोग किए गए हैं।
हाल ही में, ऐसे चैटबॉट्स की संख्या में वृद्धि हुई है जो मानव-समान तरीके से संचार कर सकते हैं। वे एक प्रकार के न्यूरल नेटवर्क का उपयोग करते हैं जिसे ट्रांसफॉर्मर न्यूरल नेटवर्क के रूप में जाना जाता है। उनमें से कुछ के साथ बातचीत करें और तंत्रिका नेटवर्क की शक्ति का अनुभव करें।