Use brain.js to build a neural network

Sep 11, 2025
कैसे करना है
brain.js neural network
(छवि क्रेडिट: गेट्टी छवियां) [1 9]

Brain.js एक तंत्रिका नेटवर्क बनाने का एक शानदार तरीका है। सीधे शब्दों में कहें, एक तंत्रिका नेटवर्क मशीन सीखने का एक तरीका है जो मानव मस्तिष्क के समान तरीके से काम करता है। एक प्रश्न के सही उत्तर को देखते हुए (जैसे 'यह उपयोगकर्ता किस विकल्प का चयन करेगा?'), यह धीरे-धीरे इनपुट और उत्तरों के बीच पैटर्न और संबंध सीखता है। एक तंत्रिका नेटवर्क का एक उदाहरण फेसबुक की चेहरे की मान्यता प्रणाली, दीपफेस है।

लेकिन तंत्रिका नेटवर्क की जटिल डोमेन भाषा और स्पष्ट रूप से खड़ी सीखने की वक्र के कारण, शुरू करना मुश्किल हो सकता है।

हमें अगले प्रशिक्षण प्रश्नों को परिभाषित करने की आवश्यकता है। एक अलग में प्रश्न। JS फ़ाइल, हमें आवश्यकता होगी प्रशिक्षण तथा वैधता सरणी। आप गिट रेपो पर अपनी सूची पा सकते हैं या अपना खुद का बना सकते हैं। आपके पास जितना अधिक प्रशिक्षण प्रश्न हैं, उतना ही सटीक आपके परिणाम। अपने प्रवेश बिंदु में इन्हें आयात करना याद रखें।

[9 6] निर्यात कॉन्स ट्रेनिंग Questions = [ { आईडी: 'क्यू 1', प्रश्न: 'क्या आप अक्सर चीजों में सबसे अच्छा देखते हैं?', विकल्प: [ {आईडी: 'क्यू 1 ए', लेबल: 'वास्तव में नहीं', मूल्य: 0.2,}, {आईडी: 'क्यू 1 बी', लेबल: 'हमेशा', मूल्य: 1.0,}, {आईडी: 'क्यू 1 सी', लेबल: 'आमतौर पर, हाँ', मूल्य: 0.7,}, {आईडी: 'क्यू 1 डी', लेबल: 'कभी नहीं!', मूल्य: 0.0,}, ], }, ];

दोनों सरणी के लिए, हमें एक प्रश्न की आवश्यकता है, चार विकल्पों की एक सरणी जिसमें एक लेबल और आशावाद मूल्य शामिल है। यह मान हमारे तंत्रिका नेटवर्क के लिए इनपुट होगा।

सुनिश्चित करें कि आप मूल्यों और मूल्यों के संतुलन को अलग करते हैं, या तंत्रिका नेटवर्क सरणी में विकल्पों के सूचकांक पर बहुत अधिक ध्यान केंद्रित कर सकता है! हमारे तंत्रिका नेटवर्क में चार इनपुट लेते हैं और चार आउटपुट देते हैं। हमारे प्रशिक्षण डेटा को इसका मिलान करने की आवश्यकता है, इसलिए हमारे कन्स्ट्रक्टर में हमें क्विज़ और उपयोगकर्ता के विकल्पों के लिए कुछ राज्य की आवश्यकता है:

[9 6] यह .state = { प्रशिक्षणकर्ताओं: प्रशिक्षण Questions.Map (() = & gt; सरणी (4) .fill (0)), प्रशिक्षण: झूठा, भविष्यवाणियां: अपरिभाषित, };

04. न्यूरल नेटवर्क की शुरुआत [4 9]

प्रशिक्षणदाताओं की प्रारंभिकरण प्रत्येक प्रश्न के लिए एक सरणी बनाता है जिसमें [0, 0, 0, 0] - कोई चयन के साथ हमारे डिफ़ॉल्ट स्थिति। हमें अपने तंत्रिका नेटवर्क की शुरुआत करने की भी आवश्यकता होगी - brain.js के साथ सिर्फ एक पंक्ति:

[9 6] यह। Net = नया brain.neuralnetwork ({supplylayers:
});

[6 9]

brains.js neural network

हमारे प्रशिक्षण सेट में प्रत्येक आइटम में दो सरणी शामिल होना चाहिए; प्रत्येक विकल्प के आशावाद मूल्य और एक आउटपुट के साथ एक इनपुट हमारे उपयोगकर्ता द्वारा बनाए गए चयन वाले (छवि क्रेडिट: हैरी ग्रे) [1 9]

05. प्रश्नोत्तरी ढांचा का निर्माण [4 9]

हमारे प्रश्नोत्तरी के लिए ढांचे का निर्माण करने के लिए, हमें अपने प्रशिक्षण प्रश्नों और विकल्पों पर लूप करने की आवश्यकता है। यह काफी वर्बोज़ है और बहुत दिलचस्प नहीं है, इसलिए मैं इसके लिए इसके लिए एक उदाहरण आउटपुट दे दूंगा:

[9 6] रेंडर () { वापसी ( & lt; मुख्य & gt; & lt; onsubmit = {this.onsubmit} & gt; [। । ।] // reterate सवालों पर & amp; विकल्प & lt; div classname = "प्रश्न" & gt; & lt; h4 & gt; {प्रश्न} & lt; / h4 & gt; & lt; div classname = "विकल्प" & gt; & lt; लेबल HTMLFOR = {OPTIOLID} & gt; & lt; अवधि & gt; {लेबल} & lt; / अवधि & gt; & lt; इनपुट टाइप = "रेडियो" अपेक्षित नाम = {QUAMEID} आईडी = {OPTIONID} जाँच की = {() = & gt; इस .SoptionChecked (प्रश्न इंडेक्स, विकल्प इंडेक्स)} onchange = {() = & gt; this.onoptionchange (प्रश्न इंडेक्स, विकल्प इंडेक्स)} / & gt; & lt; / लेबल & gt; [। । ।] & lt; / div & gt; & lt; / div & gt; [। । ।] & lt; बटन प्रकार = "सबमिट करें" & gt; सबमिट करें & lt; / बटन & gt; & lt; / फॉर्म & gt; & lt; / मुख्य & gt; ); }

यदि आप प्रतिक्रिया करने के लिए नए हैं, तो देखें प्रलेखन निर्माण रूपों के लिए।

हम अपने लिख सकते हैं isoptionchecked तथा Onoptionchange कार्य अगला:

[9 6] IsoptionChecked = (प्रश्न इंडेक्स, विकल्प इंडेक्स) = & gt; ( this.state.traininganswers [Questifyex] [OptionIndex]! == 0 ); Onoptionchange = (प्रश्न इंडेक्स, विकल्प इंडेक्स) = & gt; { इस .SetState (Prevstate = & gt; { const {startinganswers} = object.assign (prevstate, {}); प्रशिक्षणकर्ता [प्रश्न इंडेक्स] = सरणी (4)। फील (0); ट्रेनिंगअर्स [प्रश्न इंडेक्स] [विकल्प इंडेक्स] = 1; वापसी {startinganswers}; }); };

06. तंत्रिका नेटवर्क को प्रशिक्षित करें [4 9] [6 9]

brains.js neural network

हमारा यूआई अब तक, मेरे प्रशिक्षण प्रश्नों और इसके विकल्पों में से एक को दिखा रहा है। मैंने वास्तविक रेडियो बटन को छिपाने और उन्हें टॉगल बटन उपस्थिति देने के लिए सीएसएस का उपयोग किया है (छवि क्रेडिट: हैरी ग्रे) [1 9]

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

हमारे जोड़ने का समय ऑनसबमिट समारोह, जहां हम प्रशिक्षण डेटा बनाते हैं और तंत्रिका नेटवर्क को प्रशिक्षित करते हैं:

[9 6] onsubmit = e = & gt; { E.PreventDefault (); const {startinganswers} = this.state; कॉन्स ट्रेनिंगडेटा = ट्रेनिंग। एमएपी ((क्यू, i) = & gt; ({) इनपुट: q.options.map (o = & gt; o.value), आउटपुट: प्रशिक्षणदाताओं [i], })); इस .SetState ({ प्रशिक्षण: सत्य, }); this.net.trainasync (प्रशिक्षणडेटा) .then (res = & gt; { console.log (res); // त्रुटि दर और # पुनरावृत्तियों को लॉग इन करें this.getPredictions () }); }

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

उसके बाद, हम राज्य को अपडेट करते हैं प्रशिक्षण: सच उपयोगकर्ता को सूचित करने के लिए कि तंत्रिका नेटवर्क सीख रहा है। क्लाइंट डिवाइस की प्रसंस्करण शक्ति और आपके कितने प्रश्नों के आधार पर, प्रक्रिया में सेकंड, मिनट या उससे अधिक समय लग सकता है!

अंत में, हम प्रशिक्षण डेटा को हमारे तंत्रिका नेटवर्क पर पास करते हैं और इसे असीमित रूप से प्रशिक्षित करने के लिए कहते हैं। यह एक वादा देता है जो नेटवर्क को पैटर्न या छोड़ने पर पूरा होने पर पूरा होता है।

लॉग इन त्रुटि दर पर नजर रखें ट्रेनसिंक । आदर्श रूप से यह 0 - 0.05 के बीच होना चाहिए। यदि यह अधिक है, तो अपने प्रशिक्षण डेटा की जांच करें।

वहां से, हम अपनी भविष्यवाणियां प्राप्त कर सकते हैं:

[9 6] GetPredictions = () = & gt; { const भविष्यवाणियों = validationquestions.map (q = & gt; ( that.net.run (q.options.map (o = & gt; o.value)) )); इस .SetState ({ प्रशिक्षण: झूठा, भविष्यवाणियां, }); }

का उपयोग करते हुए net.run , हम अपने नए प्रशिक्षित तंत्रिका नेटवर्क से हमें पहले परिभाषित प्रत्येक सत्यापन प्रश्नों के लिए अपनी भविष्यवाणियां देने के लिए कहते हैं।

ग्रैंड फाइनल के लिए, हम अपने सशर्त लोडिंग तर्क जोड़ते हैं और उपयोगकर्ता को ढूंढते हैं।

[9 6]प्रस्तुत करना() { कॉन्स {प्रशिक्षण, भविष्यवाणियां} = इस .state; कस्टम सत्यापन प्रश्न = सत्यापन योग्य
; वापसी ( & lt; मुख्य & gt; {प्रशिक्षण & amp; & amp; ( & lt; h2 & gt; लोड हो रहा है ... & lt; / h2 & gt; )} {! भविष्यवाणियां & amp; & amp; ! प्रशिक्षण & amp; & amp; ( [। । ] // प्रशिक्षण प्रश्न फॉर्म )} {भविष्यवाणियां & amp; & amp; ! प्रशिक्षण & amp; & amp; ( & lt; div & gt; & lt; h2 & gt; हमने तंत्रिका नेटवर्क से पूछा: & lt; / h2 & gt; & lt; div classname = "प्रश्न" & gt; & lt; h4 & gt; {validationquestion.question} & lt; / h4 & gt; & lt; div classname = "विकल्प" & gt; {validationquestion.options.map ((ओ, i) = & gt; ( & lt; लेबल कुंजी = {o.id} & gt; {/ * एक गोल प्रतिशत * /} के रूप में लेबल और संभावना प्रदर्शित करें & lt; अवधि & gt; {$ {o.label}: $ {math.round (भविष्यवाणी
[i] * 100)}%} & lt; / span & gt; & lt; / लेबल & gt; ))} & lt; / div & gt; & lt; / div & gt; & lt; / div & gt; )} & lt; / मुख्य & gt; ); } }

07. नेटवर्क का विस्तार करें [4 9] [6 9]

brains.js neural network

मेरे सत्यापन प्रश्न और विकल्पों के साथ, यहां हमारे अंतिम परिणाम देखें। मैंने एक बार के रूप में इसे प्रदर्शित करने के लिए एक और div के माध्यम से संभावना को पारित किया है (छवि क्रेडिट: हैरी ग्रे) [1 9]

अब आपके पास प्रश्नोत्तरी के लिए मूल ढांचा है, इसे निम्नलिखित के साथ विस्तारित करने का प्रयास करें:

अपने उपयोगकर्ता को अपने सत्यापन प्रश्नों का उत्तर देकर अपने तंत्रिका नेटवर्क की वास्तविक त्रुटि दर का पता लगाएं। देखें कि उन्होंने आपके सबसे अच्छे अनुमान को कितनी बार चुना।

इन अतिरिक्त उत्तरों के साथ तंत्रिका नेटवर्क को प्रशिक्षित करें और देखें कि क्या आप सटीकता में सुधार कर सकते हैं।

Brain.js के साथ नोड सर्वर पर तंत्रिका नेटवर्क गणनाओं को ले जाएं कार्य करना() तथा Tojson () तरीके।

यह लेख मूल रूप से 321 में दिखाई दिया नेट पत्रिका , दुनिया की अग्रणी वेब डिजाइन पत्रिका। मुद्दा 321 खरीदें या नेट की सदस्यता लें

अधिक पढ़ें:

    [26 9] सबसे अच्छा जावास्क्रिप्ट पुस्तकालय
[26 9] कोशिश करने के लिए सबसे अच्छा जावास्क्रिप्ट ढांचे का 9 [26 9] 22 शानदार jQuery प्लगइन्स
[28 9]

कैसे करना है - सर्वाधिक लोकप्रिय लेख

44 of the best iPad shortcuts and gestures for iPadOS 2020

कैसे करना है Sep 11, 2025

(छवि क्रेडिट: भविष्य) [1 9] पर कूदना: ..


Brand typography: A complete guide

कैसे करना है Sep 11, 2025

पेंटाग्राम ने सार्वजनिक थिएटर के लिए एक bespoke typeface बना�..


How to draw feathers

कैसे करना है Sep 11, 2025

यदि आप हमेशा पंखों को आकर्षित करने के बारे में जानना चाहते हैं, और उन्हें �..


How to set up site theming with CSS variables

कैसे करना है Sep 11, 2025

सीएसएस कस्टम गुण, जिन्हें आमतौर पर सीएसएस चर के न�..


Colourise greyscale work in Photoshop

कैसे करना है Sep 11, 2025

[1 1] अंतिम छवि को पूर्ण आकार देखने के लिए श..


Keep perfect version control with Abstract

कैसे करना है Sep 11, 2025

संस्करण नियंत्रण मूल रूप से कोड के साथ काम कर रहे �..


Power a blog using the WordPress API

कैसे करना है Sep 11, 2025

पिछले कुछ वर्षों में, वर्डप्रेस के लिए एक आराम एप�..


Create a pouring water effect in RealFlow

कैसे करना है Sep 11, 2025

यह ट्यूटोरियल आपको दिखाता है कि तरल डालने वाले प्..


श्रेणियाँ