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)), प्रशिक्षण: झूठा, भविष्यवाणियां: अपरिभाषित, };प्रशिक्षणदाताओं की प्रारंभिकरण प्रत्येक प्रश्न के लिए एक सरणी बनाता है जिसमें [0, 0, 0, 0] - कोई चयन के साथ हमारे डिफ़ॉल्ट स्थिति। हमें अपने तंत्रिका नेटवर्क की शुरुआत करने की भी आवश्यकता होगी - brain.js के साथ सिर्फ एक पंक्ति:
हमारे प्रश्नोत्तरी के लिए ढांचे का निर्माण करने के लिए, हमें अपने प्रशिक्षण प्रश्नों और विकल्पों पर लूप करने की आवश्यकता है। यह काफी वर्बोज़ है और बहुत दिलचस्प नहीं है, इसलिए मैं इसके लिए इसके लिए एक उदाहरण आउटपुट दे दूंगा:
[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}; }); };
अब, जब हमारा उपयोगकर्ता एक विकल्प पर क्लिक करता है, तो हम प्रासंगिक अपडेट करते हैं प्रशिक्षणदाता एक सुविधा के लिए सरणी 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; कस्टम सत्यापन प्रश्न = सत्यापन योग्य
अब आपके पास प्रश्नोत्तरी के लिए मूल ढांचा है, इसे निम्नलिखित के साथ विस्तारित करने का प्रयास करें:
अपने उपयोगकर्ता को अपने सत्यापन प्रश्नों का उत्तर देकर अपने तंत्रिका नेटवर्क की वास्तविक त्रुटि दर का पता लगाएं। देखें कि उन्होंने आपके सबसे अच्छे अनुमान को कितनी बार चुना।
इन अतिरिक्त उत्तरों के साथ तंत्रिका नेटवर्क को प्रशिक्षित करें और देखें कि क्या आप सटीकता में सुधार कर सकते हैं।
Brain.js के साथ नोड सर्वर पर तंत्रिका नेटवर्क गणनाओं को ले जाएं कार्य करना() तथा Tojson () तरीके।
यह लेख मूल रूप से 321 में दिखाई दिया नेट पत्रिका , दुनिया की अग्रणी वेब डिजाइन पत्रिका। मुद्दा 321 खरीदें या नेट की सदस्यता लें ।
अधिक पढ़ें:
(छवि क्रेडिट: भविष्य) [1 9] पर कूदना: ..
पेंटाग्राम ने सार्वजनिक थिएटर के लिए एक bespoke typeface बना�..
यदि आप हमेशा पंखों को आकर्षित करने के बारे में जानना चाहते हैं, और उन्हें �..
सीएसएस कस्टम गुण, जिन्हें आमतौर पर सीएसएस चर के न�..
[1 1] अंतिम छवि को पूर्ण आकार देखने के लिए श..
संस्करण नियंत्रण मूल रूप से कोड के साथ काम कर रहे �..
पिछले कुछ वर्षों में, वर्डप्रेस के लिए एक आराम एप�..
यह ट्यूटोरियल आपको दिखाता है कि तरल डालने वाले प्..