Sigmora
वर्कफ़्लो

Python में शून्य से न्यूरल नेटवर्क बनाएं, चरण-दर-चरण

03
ट्रेनिंग डिबग करें

फेल हो रही ट्रेनिंग स्क्रिप्ट को डिबग करें

आपका Python फ़ाइल एक छोटे नेटवर्क को ट्रेन करनी चाहिए, लेकिन यह किसी एरर के साथ रुक जाती है या अजीब नंबर प्रिंट करती है। Sigmora फ़ाइल खोलता है, उन लाइनों को खोजता है जो मायने रखती हैं, Shell के साथ आपकी ट्रेनिंग कमांड रन करता है और असली आउटपुट एक कार्ड में दिखाता है, ताकि आप अनुमान के बजाय यह देख सकें कि क्या हुआ। एक फ़ाइल से शुरुआत करें। एजेंट खुद कुछ ट्रेन नहीं करता, क्योंकि यह काम आपका कोड करता है, और इसे उतना ही समय लग सकता है जितना लगता है। लूप छोटा है: रीड, रन, कंपेयर, चेंज। आप फ़ोल्डर चुनते हैं, आप मोड चुनते हैं और आप तय करते हैं कि कौन सा चेंज अक्सेप्ट करना है। केवल उस कोड, डेटा और कंप्यूटर का यूज़ करें जो आपका है या जिसे आप यूज़ करने की अनुमति प्राप्त है, और प्रत्येक एक्सपेरिमेंट को इतना छोटा रखें कि उसे दोहराया जा सके।

01

फ़ोल्डर ओपन करें

वर्किंग फ़ोल्डर चुनें जिसमें आपकी ट्रेनिंग स्क्रिप्ट, कॉन्फ़िग फ़ाइल और लॉग्स हों। फ़ाइल टूल्स उसी फ़ोल्डर में काम करते हैं, और list_dir दिखाता है कि उसमें क्या है। उस डेटा को रखें जिसका यूज़ आप करने की अनुमति प्राप्त हैं, ताकि आपके स्क्रिप्ट में हर पथ छोटा रहे। फ़ाइल टूल्स इस फ़ोल्डर का यूज़ करते हैं।

02

रीड के लिए कहें

Sigmora से ट्रेनिंग स्क्रिप्ट रीड करने और लेयर्स, लॉस और लूप की एक्सप्लेनेशन देने के लिए कहें। read_file और grep उन लाइनों को कोट करते हैं जिनका संदर्भ है, ताकि आप एक्सप्लेनेशन को अपने कोड से मिला सकें। Plan only मोड कुछ नहीं बदलता। यदि कोई ब्लॉक अभी भी अस्पष्ट है, तो फिर से पूछें।

03

कमांड रन करें

अपनी ट्रेनिंग कमांड का नाम दें और एक मोड चुनें। Shell Windows, WSL या अपने खुद के सर्वर पर SSH के माध्यम से इसे रन करता है, और कार्ड असली आउटपुट और exit code दिखाता है। Python को उस जगह पर इंस्टॉल होना चाहिए जहां कमांड रन हो रही है। ट्रेनिंग आपकी हार्डवेयर पर लंबा समय ले सकती है।

04

रिजल्ट चेक करें

कार्ड एक्सपैंड करें और प्रिंट की गई एरर या लॉस वैल्यूज रीड करें। एक ज़ीरो exit code का मतलब केवल यह है कि स्क्रिप्ट बिना किसी एरर के समाप्त हो गई, इसलिए नंबर का निर्णय स्वयं लें, उस वैलिडेशन डेटा पर जिसका मॉडल पहले नहीं देखा है, और जो कुछ भी देखा, उसे नोट करें। फिर अगले छोटे चेंज पर निर्णय लें।

उदाहरण: एक न्यूरॉन सादे Python में AND गेट सीखता है

perceptron_and.py
# AND gate: one neuron (perceptron) learns the table
rows = [((0,0),0), ((0,1),0), ((1,0),0), ((1,1),1)]
w = [0.0, 0.0]
b = 0.0
rate = 0.1
for epoch in range(20):
    for x, target in rows:
        total = w[0] * x[0] + w[1] * x[1] + b
        out = 1 if total > 0 else 0
        err = target - out
        w[0] += rate * err * x[0]
        w[1] += rate * err * x[1]
        b += rate * err
print("weights:", w, "bias:", b)

यह फ़ाइल एक लर्निंग रेट और वेट अपडेट के एक छोटे लूप के साथ एकल न्यूरॉन को AND गेट सीखने के लिए ट्रेन करती है, फिर वेट्स और बायस प्रिंट करती है। यह सादे Python का यूज़ करती है, कोई लाइब्रेरी नहीं और कोई रैंडम नंबर नहीं, इसलिए हर रन समान रिजल्ट देता है। इसे Shell के साथ रन करें, epochs की संख्या बदलें और इसे फिर से रन करें ताकि यह देख सकें कि प्रिंट किए गए वेट्स में क्या बदलाव आता है।

वॉकथ्रू: एक कन्वोल्यूशनल न्यूरल नेटवर्क Python एक्सपेरिमेंट को ट्रैक करना

ट्रेनिंग कोड रीड करें

कुछ भी चेंज करने से पहले, Sigmora रीड करता है। read_file आपकी ट्रेनिंग स्क्रिप्ट खोलता है, list_dir डेटा फ़ोल्डर दिखाता है और grep उन लाइनों को खोजता है जो लेयर्स, लॉस और लूप को डिफाइन करती हैं। आपको कार्ड में फ़ाइल टेक्स्ट दिखता है, ताकि आप लेयर साइज को अपने डेटा के शेप से मिला सकें। इस स्टेज पर एजेंट कुछ नहीं बदलता। लॉजिक गेट्स के लिए न्यूरल नेटवर्क मॉडल्स, जैसे ऊपर दिया गया AND फ़ाइल, क्लासिक पहला एक्सरसाइज है, और वही रीड स्टेज एक शून्य से Python में न्यूरल नेटवर्क के लिए भी उपयुक्त है जिसे आपने महीने भर पहले लिखा था और अब याद नहीं है। किसी भी ब्लॉक के बारे में सादे शब्दों में पूछें, या Plan only पर स्विच करें यदि आप लिखित एक्सप्लेनेशन चाहते हैं और कोई एक्शन नहीं। प्रत्येक एक्सप्लेनेशन को कोड के बगल में रीड करें और चेक करें कि यह आपके द्वारा लिखे गए से मेल खाता है या नहीं।

ट्रेनिंग कमांड रन करें

Auto-run चुनें यदि आप किसी रन पर भरोसा करते हैं, या Ask first चुनें यदि आप उन एक्शन्स को अप्रूव करना चाहते हैं जो कुछ चेंज करते हैं। Shell आपकी ट्रेनिंग कमांड को शुरू करता है, उदाहरण के लिए python perceptron_and.py, उस एन्वायरनमेंट में जिसे आपने चुना है, और कार्ड असली आउटपुट और exit code दिखाता है। कार्ड एक्सपैंड करें ताकि आपकी कन्वोल्यूशनल न्यूरल नेटवर्क Python स्क्रिप्ट की पूरी लॉग को लाइन-दर-लाइन रीड सकें। ट्रेनिंग उतना ही समय ले सकती है जितना लेती है, और Sigmora इसे स्पीड अप नहीं करता है। जब एक न्यूरल नेटवर्क में लॉस कन्वर्ज नहीं कर रहा होता है, तो लॉग वह जगह है जहां आप इसे पहले देखते हैं। नंबर पर ध्यान दें, केवल exit code पर नहीं, क्योंकि एक ज़ीरो exit code का मतलब केवल यह है कि स्क्रिप्ट समाप्त हो गई। फिर तय करें कि क्या कोड में चेंज की जरूरत है, और केवल यदि जरूरत हो तो diff के लिए कहें।

शेप एरर या स्लो लॉस को फिक्स करें

edit_file स्क्रिप्ट को चेंज करता है और एक diff दिखाता है। Ask first मोड में, जब तक आप diff को अक्सेप्ट नहीं करते, कुछ भी लिखा नहीं जाता, जबकि Auto-run तुरंत चेंज एप्लाई कर देता है। एक शेप एरर आमतौर पर इसका मतलब है कि डेटा और पहली लेयर मेल नहीं खाती, इसलिए फिक्स अक्सर एक नंबर होता है। एक लॉस जो मुश्किल से चल रहा है, वह लर्निंग रेट, लेबल्स की डेटा के साथ असंगति, या एक मॉडल की ओर इशारा कर सकता है जो अभी एक छोटे बैच पर ओवरफिट नहीं कर सकता। पहले उस छोटे बैच को ट्राई करें। ओवरफिटिंग और अंडरफिटिंग अलग समस्याएं हैं, इसलिए कुछ बड़ा चेंज करने से पहले ट्रेनिंग और वैलिडेशन लॉस देखें। शतरंज के लिए एक न्यूरल नेटवर्क बनाना एक बड़ा प्रोजेक्ट है, फिर भी यह उसी तरह शुरू होता है। एडिट के बाद, Shell के साथ कमांड को फिर से रन करें और नए नंबरों को पुराने नंबरों से कंपेयर करें।

रिजल्ट्स को एक CSV फ़ाइल में लॉग करें

रन्स की तुलना करने के लिए आपको फ़ाइल में नंबर की जरूरत है। write_file आपके वर्किंग फ़ोल्डर में एक CSV फ़ाइल बनाता है, या append_file हर एपॉक के लिए एक रो जोड़ता है, और read_file इसे फिर से लोड करता है ताकि एजेंट 2 रन्स को बगल में रख सके। Sigmora आपके लिए डेटा का एनालिसिस नहीं करता; यह नंबर सेव करता है और उन्हें दिखाता है, और आप तय करते हैं कि उनका क्या मतलब है। वैलिडेशन डेटा को ट्रेनिंग डेटा से अलग रखें और टेस्ट सेट को अंत तक बिना छुए छोड़ दें। Plan only मोड अगले एक्सपेरिमेंट को एक प्लान के रूप में लिख सकता है बिना कुछ रन किए। जब आप तैयार हों, तो मोड स्विच करें और एजेंट को इसे पूरा करने दें। किसी रिजल्ट को सेव करने से पहले, CSV फ़ाइल ओपन करें और चेक करें कि रो कार्ड द्वारा प्रिंट किए गए से मेल खाते हैं और प्रत्येक कॉलम लेबल किया गया है।

Windows के लिए Sigmora

अपने खुद के प्रोजेक्ट पर वर्कफ़्लो ट्राई करें

Sigmora डाउनलोड करें ↗