Machine Learning Starter

Anaconda और PyCharm का इन्सटॉलेशन

अनाकोण्डा का इन्सटॉलेशन

https://www.anaconda.com/distribution/ वेबसाइट पर Windows,macOS तथा Linux में से “Windows” पर क्लिक करने से उसका इन्सटॉलेशन फाइल मिलेगा,आपके कम्प्यूटर का ऑपरेटिंग सिस्टम ३२ या ६४ बिट का जैसा भी हो उसी के अनुरूप Python 3.9 version वाले 64-Bit Graphical Installer अथवा 32-Bit Graphical Installer को क्लिक करेंगे तो डाउनलोड हो जायगा । कम्प्यूटर में मेमोरी कम होगी तो मशीन लर्निंग से दूर रहें । इण्टरनेट की गति भी अच्छी होनी चाहिये । उक्त 631 MB का इन्सटॉलर फाइल (मेरी मशीन में Anaconda3-2022.10-Windows-x86_64.exe) को रन करेंगे तो अनाकोण्डा इन्सटॉल हो जायगा,लगभग 6.5 जीबी का है । डिफॉल्ट सेटिंग में ही इन्सटॉल करें ।(बेहतर होगा कि उपरोक्त वर्सन की बजाय अनाकोण्डा के वेबसाइट से नवीनतम वर्सन डाउनलोड करें । २३ जनवरी २०२३ ई⋅ तक यही नवीनतम वर्सन था ।)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

PyCharm का इन्सटॉलेशन

https://www.jetbrains.com/pycharm/download/#section=windows वेबसाइट से विण्डो वर्सन का पाइचार्म (कम्युनिटी एडिशन मुफ्त का है किन्तु अकेले व्यक्ति के लिये पर्याप्त है) डाउनलोड करके इन्सटॉल कर लें । फिलहाल कोई छेड़छाड़ न करें,पाइचार्म यदि खोल लिये हैं तो बन्द कर लें ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

अनाकोण्डा में परिवर्तन

अनाकोण्डा में विभिन्न परियोजनाओं के लिये विभिन्न environment बनाने पड़ते हैं । प्रारम्भिक डिफॉल्ट environment का नाम है “base” जिसमें आवश्यक पैकेज रहते हैं । किन्तु कई प्रोग्रामों के लिये नये पैकेज जोड़ने पड़ते हैं । सामान्य परिपाटी यह है कि ऐसे कार्यों के लिये आपको नये कस्टम environment बनाकर उसके भीतर उन प्रोग्रामों को चलाना चाहिये,वरना नये पैकेजों के कारण base परिवर्तित हो जायगा तो बहुत से प्रोग्राम उसमें काम ही नहीं करेंगे और वह आपका उक्त कस्टम environment बन जायगा जिसमें आपके उक्त प्रोग्राम या वैसे प्रोग्राम ही चलेंगे । किन्तु मशीन लर्निंग के कुछ आवश्यक पैकेजों को आप base में जोड़ सकते हैं । उसकी विधि निम्न है ।

विण्डो के स्टार्ट बटन पर जाकर “अनाकोण्डा” चुनें,उसमें “अनाकोण्डा प्रॉम्प्ट” को राइट क्लिक करें,more ऑप्शन पर जाकर run as administrator क्लिक करें जो अनाकोण्डा में परिवर्तन करने के लिये आवश्यक है । अनाकोण्डा का डिफॉल्ट इन्सटॉलेशन सिस्टम ड्राइव पर होता है जिस कारण एडमिनिस्ट्रेटिव मोड के बिना आप अनाकोण्डा में आप कोई जोड़−घटाव नहीं कर सकते । अनाकोण्डा को अन्य किसी ड्राइव पर इन्सटॉल करते तो एडमिनिस्ट्रेटिव मोड की आवश्यकता नहीं पड़ती,किन्तु डिफॉल्ट इन्सटॉलेशन सिस्टम ड्राइव पर ही रहने दें ।

तब अनाकोण्डा का एडमिनिस्ट्रेटिव कमाण्ड प्रॉम्प्ट खुल जायगा । उसपर बारी−बारी से निम्न दो अपडेटिंग और दो पैकेज इन्सटॉलेशन करें —
conda update conda
conda update —all (double dash, not long dash)

base एनवायरनमेण्ट में प्रोग्रामिंग नहीं करना चाहिये क्योंकि विभिन्न प्रोग्रामों के लिये अलग−अलग पैकेज इन्सटॉल करने पड़ते हैं जिस कारण एनवायरनमेण्ट में परिवर्तन हो जाता है । तब नया एनवायरनमेण्ट बनाने पर गड़बड़ी हो सकती है क्योंक कोई भी नया एनवायरनमेण्ट केवल बेस एनवायरनमेण्ट द्वारा ही बनता है जिस कारण बेस एनवायरनमेण्ट को नवीनतम वर्सन वाला रहना चाहिये । आजकल पायथन प्रोग्रामिंग के लिये सर्वाधिक आसान और लोकप्रिय पैकेज keras है,अतः keras में प्रोग्रामिंग करने के लिये पहले उसका एनवायरनमेण्ट बना लें,बेस एनवायरनमेण्ट के एडमिन मोड में निम्न कमाण्ड द्वारा —

conda create -n envkeras python=3.9 anaconda

( किसी एनवायरनमेण्ट को पूरी तरह हटाने के लिये बेस एनवायरनमेण्ट के एडमिन मोड में यह कमाण्ड रन करें=
conda remove -n envName - -all
तब C:\ProgramData\Anaconda3\envs में उस एनवायरनमेण्ट को डिलीट कर दें ।)

आजकल अनाकोण्डा का नवीनतम वर्सन python 3.9 के लिये ही है,यद्यपि पायथन का उससे भी आगे का वर्सन रिलीज हो चुका है । पायथन के नये वर्सन के अनुसार अनाकोण्डा को अपडेट करने में औसतन दो महीनों की देरी लगती है । पायथन का नवीनतम वर्सन अनिवार्य हो तो अनाकोण्डा के बदले सीधे पायथन इन्सटॉल करके उसमें प्रोग्रामिंग करनी पड़ेगी,परन्तु उसके लिये विभिन्न पैकेजों को इन्सटॉल करने में बड़ा झंझट है । अतः अनाकोण्डा ही बेहतर है,भले ही दो मास पुराने पायथन से सन्तोष करना पड़े । भविष्य में python 3.9.12 से आगे का पायथन जब अनाकोण्डा के लिये रिलीज हो तो उपरोक्त envkeras के पायथन को भी अपडेट करना पड़ेगा,तब बेहतर होगा कि उस नये पायथन के लिये सम्पूर्ण envkeras को अन−इन्सटॉल करके पूरी प्रक्रिया दोहराकर envkeras पुनः इन्सटॉल करें ताकि विभिन्न पैकेजों में परस्पर तालमेल रहे । envkeras बनाने के पश्चात उसे एक्टिवेट कर लें —

conda activate envkeras

बेस एनवायरनमेण्ट के एडमिन मोड में envkeras एनवायरनमेण्ट को एक्टिवेट करने पर envkeras का एडमिन मोड वाला ही एनवायरनमेण्ट खुलेगा । किसी भी एनवायरनमेण्ट के एडमिन मोड में ही उस एनवायरनमेण्ट के लिये उपयुक्त नये पैकेजों को इन्सटॉल कर सकते हैं,परन्तु प्रोग्रामिंग करने के लिये कभी भी किसी एनवायरनमेण्ट के एडमिन मोड का प्रयोग न करें क्योंकि प्रोग्रामिंग में भूल−चूक से सिस्टम गड़बड़ा सकता है । फिलहाल envkeras के एडमिन मोड वाले एनवायरनमेण्ट में निम्न पैकेजों को इन्सटॉल करें —

pip install tensorflow

और तब

pip install keras

यदि conda install -c anaconda keras द्वारा keras इन्सटॉल करेंगे तो keras का पुराना वर्सन ही इन्सटॉल होगा,यद्यपि २०१९ ई⋅ में conda द्वारा भी keras का वर्सन−3.8.5 इन्सटॉल हो जाता था,आजकल keras के वर्सन−3.7.0 से आगे का keras इस विधि द्वारा इन्सटॉल नहीं हो पाता,conda में जानबूझकर यह गड़बड़ी की गयी है ताकि नौसीखिये लोग ऑटोमेटिक मशीन लर्निंग से दूर रहें,जबकि ऑटो मशीन लर्निंग तो नौसीखियों के लिये ही बनाया गया है ।

अनाकोण्डा के लिये बड़ी संख्या में पैकेज बने हैं जो सब के सब इन्सटॉल नहीं करने चाहिये,वरना आपस में लड़ जायेंगे । उन पैकेजों को लाने और हटाने का प्रोग्राम है “conda” जो उक्त कमाण्ड conda update conda रन करने पर अपडेट हो जायगा । अनाकोण्डा के एडमिनिस्ट्रेटिव कमाण्ड प्रॉम्प्ट पर conda update conda लिखकर या पेस्ट करके एण्टर दबाने से ऐसा हो जायगा । इसी विधि द्वारा उपरोक्त सारे कमाण्ड रन कर लें ।

conda install -c anaconda keras के बदले pip install keras कमाण्ड भी रन कर सकते थे,बात बराबर है ।

उक्त चारों कमाण्ड सम्पन्न हो जाने के बाद conda update anaconda रन करें ताकि keras के साथ समूचे anaconda का तालमेल बैठ जाय । अब आप अनाकोण्डा प्रॉम्प्ट अथवा पाइचार्म पर keras एनवायरनमेयट में पायथन भाषा में कृत्रिम बुद्धि की मशीन लर्निंग वाला प्रोग्राम बना सकते हैं,परन्तु मोड वाले प्रोग्रामों को इसपर न चलायें,उसके लिये अगला लेख है । ।

बेस में conda update anaconda रन करने पर १९⋅०२⋅२०२३ ई⋅ को पायथन ३⋅८⋅१६ वाला अनाकोण्डा अपडेट हुआ ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

डेडिकेटेड GPU प्रोग्रामिंग

यदि आपके कम्प्यूटर में NVIDEA या किसी कम्पनी का डेडिकेटेड ग्राफिक कार्ड (GPU) है तो आप conda install -c anaconda keras के बदले conda install -c anaconda keras-gpu रन कर सकते हैं किन्तु base एनवायरनमेण्ट में एसा करने पर मुझे समूचा अनाकोण्डा अन−इन्सटॉल करके पुनः इन्सटॉल करना पड़ गया था क्योंकि तब बिना GPU वाले सारे प्रोग्राम बेकार हो गये!अतः भविष्य में conda install -c anaconda keras-gpu को MyGpu या gpu1 जैसे किसी मनचाहे नाम वाले नये एनवायरनमेण्ट में इन्सटॉल कर सकते हैं जो सैकड़ों लाइब्रेरियों और पैकेजों में परिवर्तन करके उस नये एनवायरनमेण्ट को जीपीयू−प्रोग्रामिंग वाला एनवायरनमेण्ट बना देगा और उसमें CUDA−प्रोग्रामिंग के लिये अनिवार्य cudatoolkits,cudann जैसे पैकेज स्वतः इन्सटॉल कर देगा । CUDA−प्रोग्रामिंग जटिल है,किन्तु सीख लेंगे तो अपने लैपटॉप की कम्प्यूटिंग गति को ३८४ से लेकर सात−आठ हजार गुणा तक बढ़ा सकते हैं,आपके उन प्रोग्रामों के लिये लैपटॉप में छोटे से मोबाइल सुपरकम्प्यूटर की शक्ति आ जायगी । किन्तु वैसे प्रोग्राम उन कम्प्यूटरों पर नहीं चलेंगे जिनमें डेडिकेटेड GPU नहीं हैं । अधिकांश लैपटॉपों में अलग से डेडिकेटेड GPU लगाना सम्भव नहीं रहता है ।

अतः नीचे सामान्य लैपटॉपों और डेस्कटॉपों के लिये उदाहरण प्रस्तुत है जिनमें अलग से डेडिकेटेड GPU नहीं है और केवल सामान्य रैम है ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

अनाकोण्डा प्रॉम्प्ट पर पायथन न्यूरल नेटवर्क मशीन लर्निंग प्रोग्राम

मशीन लर्निंग के लिये डाटा फाइल

पहले इस फाइल को डाउनलोड करके किसी फोल्डर में रख लें —
https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv

इस डाटा का स्रोत यूनिवर्सिटी अॅव कैलिफॅर्निया (इर्विन कैम्पस) है । उसके वेबसाइट पर मशीन लर्निंग हेतु कुल ४८७ डाटासेट हैं — https://archive.ics.uci.edu/ml/index.php

इस फाइल में ७६८ अमरीकी “पीमा” रेड−इण्डियन महिलाओं के मेडिकल रेकर्ड हैं और उनमें से किन−किन को डायबिटीज है यह भी उल्लेख है । रेकर्ड में निम्न आठ कॉलम हैं —

१⋅Number of times pregnant
२⋅Plasma glucose concentration a 2 hours in an oral glucose tolerance test
३⋅Diastolic blood pressure (mm Hg)
४⋅Triceps skin fold thickness (mm)
५⋅2-Hour serum insulin (mu U/ml)
६⋅Body mass index (weight in kg/(height in m)^2)
७⋅Diabetes pedigree function
८⋅Age (years)

इस फाइल का नाम pima-indians-diabetes.csv रखें । मैंने अपने लैपटॉप के Z: नाम वाले रैमड्राइव में इसे रखा,आप किसी भी ड्राइव और फोल्डर में रख सकते हैं किन्तु उसका सही पथ निम्न प्रोग्राम में रहना चाहिये,मेरे फाइल का पथ Z:\PythonPrograms है ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

प्रोग्राम की पूवपीठिका

अब मानव मस्तिष्क के न्यूरल नेटवर्क की नकल पर बने कृत्रिम न्यूरल नेटवर्क (ANN Artificial Neural Network) द्वारा उपरोक्त मेडिकल डाटा की स्वचालित जाँच कराकर देखते हैं कि कृत्रिम बुद्धि द्वारा डायबिटीज की भविष्यवाणी सम्भव है या नहीं । यहाँ वास्तविक भविष्यवाणी नहीं की जा रही है किन्तु इसी प्रोग्राम में किसी नये व्यक्ति के इसी प्रकार के मेडिकल आँकड़े डाले जाय तो यह प्रोग्राम बता देगा कि उस व्यक्ति को डायबिटीज होने की सम्भावना है या नहीं,अतः इस प्रोग्राम के लिये भविष्यवाणी शब्द का प्रयोग सही है ।

पहले पूरे प्रोग्राम को सही तरीके से चलाने का तरीका स्पष्ट कर लें,बाद में प्रोग्राम की बारीकियाँ और प्रोग्राम में प्रयुक्त तकनीकी शब्दों के अर्थों की पड़ताल करेंगे ।

अनाकोण्डा के एडमिन मोड वाले कमाण्ड प्रॉम्प्ट पर मैंने यह प्रोग्राम चलाकर उसके स्क्रीनशॉट का कुछ हिस्सा संलग्न किया है,किन्तु उचित यही है कि अनाकोण्डा के एडमिन मोड वाले कमाण्ड प्रॉम्प्ट पर केवल दो कार्य ही करने चाहिये — अनाकोण्डा के पैकेजों में फेरबदल और नये एनवायरनमेण्ट आदि का निर्माण,तथा अपना कोई ऐसा प्रोग्राम चलाना जो सिस्टम ड्राइव पर फाइल बनाना या मिटाना या रीड−राइट करता हो ।

सबसे पहला कार्य है अनाकोण्डा के एडमिन मोड वाले अथवा सामान्य कमाण्ड प्रॉम्प्ट से “पायथन” की प्रोग्रामिंग मोड में प्रवेश । इसके लिये कमाण्ड प्रॉम्प्ट पर python लिखकर एण्टर दबा दें,> > > आ जायगा जो इस बात का सबूत है कि अब आप पायथन प्रोग्रामिंग भाषा में प्रोग्राम लिखने वाले पायथन विण्डो में हैं ।

यह पूरा उदाहरण सिक्वेन्शल−मॉडल के मल्टी लेयर परसेप्ट्रॉन न्यूरल नेटवर्क (MLP : Multi-Layer Perceptron) पर आधारित है ।

उसके बाद निम्न कोड एक बार में ही पूरा पेस्ट कर सकते हैं,अथवा एक−एक पङ्क्ति पेस्ट करके एण्टर दबाते जाय,प्रोग्राम का उतना हिस्सा रन (एग्जेक्यूट) होता जायगा —

यह है सम्पूर्ण प्रोग्राम —
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃
from numpy import loadtxt
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import tensorflow as tf
tf.compat.v1.get_default_graph

dataset = loadtxt('Z:\Z_GPU\PythonPrograms\pima-indians-diabetes.csv', delimiter=',')

X = dataset[:,0:8]
y = dataset[:,8]
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X, y, epochs=30, batch_size=10)
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))
▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃▃

केरस और टेन्सरफ्लो में कई बार वर्सन में अन्तर के कारण प्रोग्राम चल नहीं पाते हैं । keras. के स्थान पर सारे इम्पोर्ट कमानों में tensorflow.keras. प्रयोग करेंगे तो यह समस्या नहीं आयगी,इण्टानेट के ट्यूटोरियलों में प्रायः इस बात का उल्लेख नहीं रहता है । निम्न दो पङ्क्तियाँ देने पर टेन्सरफ्लो का कम्पैटिबल वर्सन अपना टेन्सर−ग्राफ बना देगा —
import tensorflow as tf
tf.compat.v1.get_default_graph

पायथन में प्रवेश और प्रोग्राम की पहली पङ्क्ति रन करके दूसरी पङ्क्ति पेस्ट या टाइप करने के बाद पहले संलग्न फोटो की तरह कमाण्ड विण्डो दिखेगा ।

1.jpg

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

न्यूरल नेटवर्क की ट्रेनिंग

न्यूरल नेटवर्क की ट्रेनिंग इस एक पङ्क्ति द्वारा होती है —

model.fit(X, y, epochs=150, batch_size=10)

किन्तु उक्त पङ्क्ति में verbose=0 जोड़कर लिखें तो हर पङ्क्ति की रिपोर्ट दिखाने में प्रोग्राम समय नष्ट नहीं करेगा ।
model.fit(X, y, epochs=150, batch_size=10, verbose=0 )

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

प्रोग्राम का परिणाम

निम्न दो पङ्क्तियाँ परिणाम दिखा देगा —

_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy*100))

2.jpg

प्रोग्राम स्वंय बता रहा है कि औसत accuracy =76.82% की है । इसी प्रोग्राम को पायचार्म PyCharm में रन करने पर accuracy =७७⋅२१% मिला । कमाण्ड प्रॉम्प्ट या पायचार्म में इसी प्रोग्राम को जितनी बार रन करेंगे,अलग−अलग accuracy मिलेगी तो त्रुटि नहीं है बल्कि सांख्यिकी पर आधारित पद्धति का फल है । accuracy कभी भी १००% नहीं होगी,क्योंकि १००% का अर्थ है कि किसी सही समीकरण द्वारा परिणाम निकाला जा रहा है और जब समीकरण पता है तो मशीन लर्निंग वाली कृत्रिम बुद्धि की आवश्यकता ही नहीं है ।
( epochs=30000, batch_size=200 करने पर समय पहले की तरह केवल ढाइ मिनट किन्तु Accuracy: 84.77%!)

RTX3070ti डेडिकेटेड GPU वाले नये लैपटॉप में CPU मोड वाला उपरोक्त प्रोग्रोम स्वतः CPU+GPU दोनों पर चलता है,बैच 50 और एपोक 30000 करने पर एक्यूरेसी 90.23% आयी,CPU २३% एवं GPU ९% व्यस्त रहा । इस लैपटॉप के GPU में ६१४४ कुडा कोर हैं,अतः तीव्रगति का है ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

भविष्यवाणी का प्रोग्रामर

ऊपर “प्रोग्राम का परिणाम” अनुच्छेद के अन्तर्गत जो दो पङ्क्तियाँ हैं वे न्यूरल नेटवर्क की ट्रेनिंग की accuracy जानने के लिये हैं । उन दो पङ्क्तियों को हटाकर और मॉडल−फिट में verbose=0 जोड़कर,जैसा कि ऊपर वर्णित है,प्रोग्राम के अन्त में निम्न पङ्क्ति जोड़ दें तो पूरा प्रोग्राम “भविष्यवक्ता” मोड में कार्य करने लगेगा ।

predictions = model.predict_classes(X)

भविष्यवाणी करने में प्रोग्राम कितना कुशल या अकुशल है इसकी जाँच के लिये अन्त में निम्न पङ्क्तियाँ जोड़ दें,यहाँ ५ लिखा है जिसका अर्थ यह है कि केवल ५ लोगों के बारे में भविष्यवाणी की रिपोर्ट देखनी है,५ को आप घटा−बढ़ा सकते हैं ।

for i in range(5):
print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))

यदि डाटाबेस में लोगों की कुल संख्या १०० हो और प्रोग्राम की accuracy ७६% हो तो १०० में से ७६ लोगों में डायबिटीज के होने या न होने के बारे में प्रोग्राम सही भविष्यवाणी करेगा और शेष २४ लोगों के बारे में गलत भविष्यवाणी करेगा । एक्यूरेसी बढ़ाने के बहुत से तरीके हैं जो आगे की बात है ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

प्रोग्राम का तकनीकी विवरण

यह प्रोग्राम मैंने नहीं बनाया,निम्न वेबसाइट पर यह पहले से लोड था —
https://machinelearningmastery.com/tutorial-first-neural-network-python-keras/

उक्त वेबसाइट पर इस प्रोग्राम की सभी पङ्क्तियों के अर्थों और कार्यों का स्पष्टीकरण किया गया है,और उतने ही स्पष्टीकरण से समझ में न आये तो उनमें प्रयुक्त तकनीकी शब्दों की विस्तृत व्याख्यायें विकिपेडिया और गूगल सर्च द्वारा पता लगा सकते हैं ।

किन्तु अनाकोण्डा इन्सटॉल करने और उसपर प्रोग्राम चलाने के बारे में नेट पर जितने भी ट्यूटोरियल हैं वे ऐसे लोग लिखते हैं जिनको इस बात से सरोकार नहीं है कि नौसीखियों के लिये किस तरह लिखना चाहिये । पहली बार मैंने अनाकोण्डा के बेस एनवायरनमेण्ट में केरास−जीपीयू इन्सटॉल कर दिया तो पूरा अनाकोण्डा ही केवल जीपीयू−प्रोग्रामिंग के लिये परिवर्तित हो गया और गैर−जीपीयू वाला कोई प्रोग्राम उसपर नहीं चल पाया । केरास−जीपीयू हटाने पर भी कोई सुधार नहीं हुआ क्योंकि पूरा एनवायरनमेण्ट ही जीपीयू−प्रोग्रामिंग के लिये ढाला जा चुका था । अतः समूचा अनाकोण्डा और पाइचार्म अन−इन्सटॉल करके पुनः इन्सटॉल करना पड़ा,दो बार डाउनलोड करने के कारण कुल ७ जीबी डाउनलोडिंग!इसी तरह पाइचार्म में केरास इन्सटॉल करने के जितने तरीके मैंने नेट पर पढ़ें वे सब व्यर्थ सिद्ध हुए,केरास ही नहीं बल्कि कोई भी पैकेज पाइचार्म में इन्सटॉल करने पर पाइचार्म हैंग कर जाता था और ऑल्ट+कण्ट्रोल+डिलीट में जाकर उसे बन्द करना पड़ता था । नेट से कोई सहायता नहीं मिली क्योंकि नेट पर सब के सब पूर्ण विशेषज्ञ थे जो यह बताने के लिये तैयार ही नहीं थे कि पाइचार्म में कुछ भी तभी इन्सटॉल होगा जब एडमिनिस्ट्रेटिव मोड में पाइचार्म रन किया जाय — जैसा कि अनाकोण्डा के बारे में मैंने ऊपर लिखा है । पाइचार्म का सही प्रयोग सीख लेंगे तो वह अनाकोण्डा चलाने के लिये अनाकोण्डा के अपने कमाण्ड प्रॉम्प्ट से भी बेहतर सॉफ्टवेयर है ।

पायथन प्रोग्रामिंग भाषा सीखने के लिये यह सबसे विस्तृत ट्यूटोरियल है —
https://docs.python.org/3/tutorial/index.html
पायथन प्रोग्रामिंग,अनाकोण्डा और बहुत से सम्बन्धित विषयों के वीडियो और नमूने भी गूगल सर्च द्वारा मिल जायेंगे । मशीन लर्निंग के सभी तकनीकी शब्दों की विस्तृत व्याख्या विकिपेडिया में मिल जायगी । कोई समस्या हो तो फेसबुक के ग्रुप “कृत्रिम बुद्धि की कार्यशाला” में पूछें ।

इन्सटॉलेशन के लिये इस वेबसाइट पर अच्छी सहायता मिलेगी —
https://i-systems.github.io/IoT/html/hw/Python%20Installation%20Instructions_new.html

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

फाइल डाउनलोड लिंक

कुछ लोगों को pima-indians-diabetes.csv फाइल डाउनलोड करने में कठिनाई हो रही है,वे इस वेबपृष्ठ के नीचे “फाइल” टैब क्लिक करके डाउनलोड कर सकते हैं ।

वहीं एक और फाइल keras_first_network.py मिलेगा जिसमें “प्रेडिक्शन” वाला अन्तिम अंश छोड़कर “एक्यूरेसी” तक का पूरा प्रोग्राम है जिसे क्लिक करने पर वह प्रोग्राम पाइचार्म में स्वतः खुल जायगा,बशर्ते पाइचार्म ठीक से इन्सटॉल हुआ हो । यह “पायथन स्क्रिप्ट” फाइल है ।

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

पायथन के विभिन्न ग्राफिक यूजर इण्टरफेसों पर प्रोग्रामिंग

मशीन लर्निंग प्रोग्रामर बनना चाहते हैं तो अनाकोण्डा कमाण्ड प्रॉम्प्ट में ही पायथन प्रोग्रामिंग का अभ्यास बनायें,इसमें आप अधिक साधनों का प्रयोग कर सकेंगे ।

PyCharm में सम्पूर्ण उपरोक्त प्रोग्राम

( epochs=30000, batch_size=200 करने पर समय पहले की तरह केवल ढाइ मिनट किन्तु Accuracy: 84.77%!)

3.jpg

SPYDER

अनाकोण्डा के प्रॉम्प्ट पर spyder टाइप करके एण्टर दबाने पर कुछ काल में यह प्रोग्राम खुल जायगा । इसमें बायीं ओर के विण्डो में उपरोक्त पूरा प्रोग्राम पेस्ट करके रन करेंगे तो पाइचार्म की तरह परिणाम मिलेगा,मेरी मशीन में जो परिणाम spyder ने दिखाया वह संलग्न स्क्रीनशॉट में है । कई लोग शिकायत करते हैं कि spyder में मशीन लर्निंग के प्रोग्राम कई बार error मेसेज देने लगते हैं,किन्तु इस प्रोग्राम में spyder ने सही परिणाम बताया । पाइचार्म सम्पूर्ण प्रोग्रामिंग हेतु spyder से बेहतर है किन्तु spyder का भी अभ्यास कर लें ।
( epochs=30000, batch_size=200 करने पर समय पहले की तरह केवल ढाइ मिनट किन्तु Accuracy: 84.77%!)

4.jpg

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

JUPYTER NOTEBOOK

अनाकोण्डा द्वारा जुपिटर−नोटबुक खोलें और उसमें उपरोक्त कोड ज्यों का त्यों पेस्ट कर दें और रन करें,निम्न स्क्रीनशॉट की तरह परिणाम मिलेगा ।

5.jpg

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

मॉडल सेविंग का सर्वोत्तम उपाय

न्यूरल ट्रेनिंग में समय लगता है और हर बार अलग−अलग एक्यूरेसी आती है । हो सकता है हर बार ७०% से ८०% की एक्यूरेसी आये और एक बार संयोग से ९९% एक्यूरेसी आये जो बार−बार प्रयास करने पर भी फिर कभी न आये । न्यूरल नेटवर्क की पद्धति सांख्यिकी पर आधारित स्टोकैस्टिक पद्धति है जिस कारण हर बार अलग परिणाम मिलते हैं । अतः प्रोग्राम के अन्त में निम्न एक पङ्क्ति जोड़ देंगे तो पूरे न्यूरल मॉडल का ट्रेण्ड आर्किटेक्चर समस्त weights के साथ सुरक्षित हो जायगा,और भविष्य में उस सेव्ड मॉडल द्वारा सीधे प्रेडिक्शन कर सकते हैं,यदि उसकी एक्यूरेसी ९९% है तो हर बार परिणाम ९९% ही मिलेगा । अतः प्रोग्राम को ट्रेण्ड करते समय पहली बार model1.h5 नाम से सेव करें,दूसरी बार model2.h5 नाम से,तीसरी बार model3.h5 नाम से⋅⋅⋅⋅⋅⋅ ⋅⋅⋅⋅⋅⋅ आदि । बाद में उनमें से जो सर्वाधिक एक्यूरेसी वाला हो केवल उसे बचाकर रखें,शेष समस्त .h5 फाइलों को डिलीट कर दें । इस प्रकार औसतन ७५% के आसपास एक्यूरेसी देने वाले प्रोग्राम से भी आप ९०% से अधिक एक्यूरेसी वाला मॉडल प्राप्त कर सकते हैं जो सदा काम देगा ।

(append to a python program at its end) =
▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓

  1. save model and architecture to single file

model.save("Z:\Z_GPU\PythonPrograms\model.h5")
print("Saved model to disk")
▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓
उस सेव्ड मॉडल द्वारा बाद में जब मूल्याङ्कन (या प्रेडिक्शन) करना हो तो यह कोड चलायें —

ब्रैकेट के भीतर पूरी पङ्क्ति का अर्थ है कि वह पङ्क्ति प्रोग्राम का अङ्ग नहीं है,केवल आपको समझाने के लिये है,उन पङ्क्तियों को प्रोग्राम के भीतर स्मरणार्थ रखना चाहते हैं तो ब्रैकेट हटाकर पङ्क्ति के आरम्भ में # चिह्न डाल दें ।

( load and evaluate a saved model)
from numpy import loadtxt
from tensorflow.keras.models import load_model

model = load_model("Z:\Z_GPU\PythonPrograms\/model.h5")
model.summary()
dataset = loadtxt("Z:\Z_GPU\PythonPrograms\pima-indians-diabetes.csv", delimiter=",")
X = dataset[:,0:8]
Y = dataset[:,8]
score = model.evaluate(X, Y, verbose=0)
print("%s: %.2f%%" % (model.metrics_names[1], score[1]*100))
▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓▒░▓
Saving and loading best model checkpoint :-
https://machinelearningmastery.com/check-point-deep-learning-models-keras/
❃❄❅❉❀✰✪❁❂✾✽❊❃❄❅❉❀✰✪❁❂✾✽❊
प्रेडिक्शन के लिये यह सिण्टैक्स है —
model.predict(X)
########################################
sklearn मॉडल को सेव करने के लिये इस वेबसाइट को पढ़ें —
http://machinelearningmastery.com/save-load-machine-learning-models-python-scikit-learn/

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Noncommercial 2.5 License.