Utilizați creier.js pentru a construi o rețea neurală

Sep 11, 2025
brain.js neural network
(Credit Imagine: Getty Images)

Brain.js este o modalitate fantastică de a construi o rețea neuronală. Pur și simplu, o rețea neurală este o metodă de învățare a mașinilor care funcționează în mod similar cu un creier uman. Având în vedere răspunsul corect la o întrebare (cum ar fi "ce opțiune va alege acest utilizator?"), Învață încet modelul și relația dintre intrări și răspunsuri. Un exemplu al unei rețele neuronale este sistemul de recunoaștere facială Facebook, adânc.

Dar, datorită limbii complexe de domenii a rețelelor neuronale și a curbei de învățare aparent abrupte, poate fi greu de început.

În acest tutorial, vom distra teoria până la nevoie de a cunoaște și, important, să ne blocați cu ajutorul creierului. Pentru a crea o rețea neurală. Până la sfârșit, veți avea o aplicație web care solicită întrebări cu răspunsuri multiple despre optimismul unui utilizator. Când se supun, aceste răspunsuri vor instrui o rețea neuronală la probabilitatea utilizatorului nostru de selectare a fiecărei opțiuni pentru o nouă întrebare.

Doresc mai multe instrumente utile de design web? Vedeți postul nostru despre alegerea perfectă Builder de site-uri web . Sau dacă aveți nevoie de undeva pentru a stoca fișiere în siguranță, verificați alegerea celor mai bune Stocare in cloud . Planificarea unui site complex? Veți avea nevoie de o robustă web hosting serviciu, care poate ține pasul.

Descărcați fișierele de care aveți nevoie pentru acest tutorial.

01. Configurați proiectul

În primul rând, descărcați și instalați dependențele necesare. Acest tutorial presupune că aveți o cunoaștere de lucru a reacției sau a cartografului echivalent la o alternativă preferată.

Creați o aplicație reacțională utilizând metoda dorită. Puteți încerca Facebook Creați-reacție-aplicație Instrument, instalat folosind următoarele:

npm install create-react-app -g

02. Porniți aplicația

Acum putem construi, instala Brain.js și începem aplicația noastră:

 NPX Creați-reacție-App Optimism-Nn
CD Optimism-Nn
NPM Instalați Brainjs.
NPM Start 

Vom realiza calculul rețelei neuronale asupra browserului. Rețelele neuronale sunt intense de resurse și ar trebui să fie descărcate pe un server. Cu toate acestea, acest mod este rapid de configurat și amendă pentru nevoile noastre de bază. Acum, să adăugăm creier.js la punctul nostru de intrare (în cazul meu, App.js).

 importul creierului din "creier.js";

03. Definiți întrebările dvs. de instruire

brains.js neural network

O vizualizare a rețelei noastre neuronale. Intrările provin din valoarea optimismului fiecărei opțiuni pentru o întrebare. Acestea sunt apoi manipulate de stratul ascuns pentru a ne oferi ieșirile pe care le dorim - probabilitatea selectată a fiecărei opțiuni (Credit de imagine: Harry Gray)

Trebuie să definim întrebările noastre de formare. Într-un separat întrebări.js. dosar, avem nevoie de a trainingquestion și validare Array. Puteți găsi lista mea pe Git Repo sau creați-vă propriul dvs. Cu cât aveți mai multe întrebări de antrenament, cu atât rezultatele dvs. sunt mai precise. Nu uitați să le importați în punctul dvs. de intrare.

 Export Const Trainingquestion = [
  {
    ID: "Q1",
    Întrebare: "Adesea vedeți cele mai bune lucruri?",
    Opțiuni: [
      {ID: "Q1A", etichetă: "Nu într-adevăr", valoare: 0.2,},
      {ID: "Q1B", etichetă: "întotdeauna", valoare: 1.0,},
      {ID: "Q1C", etichetă: "De obicei, da", valoare: 0.7,},
      {ID: "Q1D", etichetă: "Niciodată!", valoare: 0.0,},
    ],
  },
];

Pentru ambele matrice, avem nevoie de o întrebare, o serie de patru opțiuni care conțin o etichetă și o valoare de optimism. Această valoare va fi contribuția pentru rețeaua noastră neuronală.

Asigurați-vă că modificați ordinea și echilibrul valorilor sau rețeaua neuronală se poate concentra prea mult pe indexul opțiunilor din matrice! Rețeaua noastră neuronală durează patru intrări și oferă patru ieșiri. Datele noastre de instruire trebuie să se potrivească cu acest lucru, astfel încât în ​​constructorul nostru avem nevoie de anumite stat pentru test și opțiunile utilizatorului:

 Acest.State = {
  trainingswers: trainingquestions.map (() = & gt; matrice (4) .fill (0)),
  Instruire: FALSE,
  Predicții: nedefinite,
};

04. Inițializați rețeaua neuronală

Inițializarea de formare profesională creează o matrice pentru fiecare întrebare care conține [0, 0, 0, 0] - starea noastră implicită fără selecție. De asemenea, vom avea nevoie să inițializăm rețeaua neuronală - doar o singură linie cu creier.js:

 Acest lucru = creierul nou.NuralNetwork ({HIDENLAYERS: 
});

brains.js neural network

Fiecare element din setul nostru de formare trebuie să fie format din două matrice; o intrare cu valoarea optimismului fiecărei opțiuni și o ieșire care conține selecția făcută de utilizatorul nostru (Credit de imagine: Harry Gray)

05. Construiți cadrul Quiz

Pentru a construi cadrul pentru testul nostru, trebuie să ne bucurăm de întrebările și opțiunile noastre de instruire. Aceasta este destul de verbose și nu foarte interesantă, așa că voi da un exemplu de ieșire pentru a vă urmări în schimb:

 Render () {
  întoarcere (
    & lt; principal & gt;
      & lt; formular onsubmit = {acest.onsubmit} & gt;
        [. . .] // iterate peste întrebări & amp; Opțiuni
        & lt; div clasaname = "întrebare" & gt;
          & lt; h4 & gt; {întrebare} și lt; / h4 & gt;
          & lt; div CLASSNAME = "Opțiuni" & GT;
            & lt; etichetă htmlfor = {optid} & gt;
              & lt; span & gt; {etichetă} & lt; / span & gt;
              & lt; intrare
                Tip = "radio"
                necesar
                Nume = {chestionar}
                id = {optid}
                verificat = {() = & gt; thisoptionchecked (chestionareIx, opționalIndex)}
                onchange = {() = & gt; this.onoptionchange (chestionarex, opționalIndex)}
              / & gt;
            & lt; / etichete & gt;
            [. . .]
          & lt; / div & gt;
        & lt; / div & gt;
        [. . .]
        & butonul Type = "Trimiteți" & GT; Trimiteți & Lt; / buton & gt;
    & lt; / form & gt;
    & lt; / principal & gt;
  );
}

Dacă sunteți nou să reacționați, consultați documentație pentru forme de construcție.

Ne putem scrie ISOPTIONCHEDED. și Omoptionchange. Funcții următoare:

 ISOPTIONCHECKED = (întrebareIndex, opționalIndex) = & gt; (
  ăsta.State.Trainingwers [chestionareEx] [OptionIndex]! == 0
);
Onoptionchange = (întrebareIndex, opționalIndex) = & gt; {
  acest.setstate (previstat = & gt; {
    const {traininganswers} = obiect.assign (prevastat, {});
    Trainingswers [chestionareEx] = matrice (4) .fill (0);
    Finistrele de formare [chestionareEx] [OptionIndex] = 1;
    Returnați {Trainingingwers};
  });
}; 

06. Antrenează rețeaua neuronală

brains.js neural network

UI-ul nostru până acum, arătând una dintre întrebările mele de antrenament și opțiunile sale. Am folosit CSS pentru a ascunde butoanele radio reale și a le oferi un aspect buton de comutare (Credit de imagine: Harry Gray)

Acum, atunci când utilizatorul nostru face clic pe o opțiune, actualizăm respectivul trainingswers. matrice pentru a fi prezentat a 1. În indexul selectat și schimbați starea butonului radio pentru ao arăta ca fiind verificată.

Este timpul să adăugăm nostru onsubmit. Funcția, în cazul în care construim datele de formare și instruirea rețelei neuronale:

 Onsubmit = E = & GT; {
    e.preventdefault ();
    const {Trainingingwers} = this.State;
    const trainingdata = trainingquestions.map ((q, i) = & gt; ({{{
      Intrare: Q.Options.map (O = & gt; O.Value),
      Ieșire: TrainingiRewers [i],
    }));
    acest.setstate ({{
      Instruire: Adevărat,
    });
    the.net.traraync (Trainingdata)
      . Atunci (res = & gt; {
        consola.log (res); // jurnal rata de eroare și # iterații
        this.getpredicții ()
      });
  } 

Looping peste trainingquestion , creăm matricele de intrare și ieșire de care avem nevoie. Obținem datele de intrare luând valoarea de optimism a fiecărei opțiuni și obținem datele de ieșire să se uite în trainingswers. matrice în același indice ca și întrebarea.

După aceea, actualizăm statul cu Formare: Adevărat Pentru a informa utilizatorul că rețeaua neuronală învață. În funcție de puterea de procesare a dispozitivului client și de câte întrebări aveți, procesul poate dura câteva minute sau mai mult!

În cele din urmă, trecem datele de formare în rețeaua noastră neuronală și le spunem să pregătească asincron. Acest lucru returnează o promisiune care este îndeplinită atunci când rețeaua a găsit modelul sau a renunțat.

Păstrați un ochi pe rata de eroare ne-am conectat Trainync. . În mod ideal, ar trebui să fie între 0 și 0,05. Dacă este mai mare, verificați datele dvs. de instruire.

De acolo, putem obține predicțiile noastre:

 getpredicții = () = & gt; {
  const predicții = validarequestions.map (q = & gt; (
    the.net.run (q.options.map (O = & gt; O.Value))
  );

  acest.setstate ({{
    Instruire: FALSE,
    Predicții,
  });
}

Folosind. net.run. , solicităm nouta noastră rețea neurală instruită să ne dea predicțiile pentru fiecare dintre întrebările de validare pe care le-am definit mai devreme.

Pentru Grand Finale, adăugăm logica noastră de încărcare condiționată și prezentăm o constatare către utilizator.

Render () {
    const {antrenament, predictii} = this.State;
    const validarequestation = validareQUESTIES 
; întoarcere ( & lt; principal & gt; {Instruire & amp; & amp; ( & lt; h2 & gt; încărcarea ... & lt; / h2 & gt; )} {! Predictii & amp; & amp; ! antrenament & amp; & amp; ( [. . .] // formularul de formare a întrebărilor )} {Predictii & amp; & amp; ! antrenament & amp; & amp; ( & Lt; div & gt; & lt; h2 & gt; am cerut rețelei neuronale: [i] * 100)}%} & Lt; / span & gt; & lt; / etichete & gt; ))} & lt; / div & gt; & lt; / div & gt; & lt; / div & gt; )} & lt; / principal & gt; ); } }

07. Extindeți rețeaua

brains.js neural network

Iată rezultatele noastre finale, cu întrebarea mea de validare și opțiunile. Am trecut probabilitatea prin intermediul unui alt div pentru ao afișa ca un bar (Credit de imagine: Harry Gray)

Acum aveți cadrul de bază pentru testul, încercați să îl extindeți cu următoarele:

Găsiți rata de eroare reală a rețelei noastre neuronale, permițându-vă utilizatorului dvs. să răspundă la întrebările dvs. de validare. Vedeți de câte ori au ales cea mai bună estimare.

Antrenați rețeaua neuronală cu aceste răspunsuri suplimentare și vedeți dacă puteți îmbunătăți acuratețea.

Deplasați calculele rețelei neuronale pe un server de nod cu creierul.js a functiona() și TOJSON () Metode.

Acest articol a apărut inițial în emisiunea 321 în revista netă , cea mai importantă revista Web Design Web. Cumpăra problema 321. sau Abonați-vă la Net. .

Citeste mai mult:

  • Cele mai bune biblioteci JavaScript
  • 9 dintre cele mai bune cadre JavaScript pentru a încerca
  • 22 pluginuri jquerice strălucitoare

să - Cele mai populare articole

Cum să trageți un gât și umeri

Sep 11, 2025

Când învățați cum să trageți un gât și umeri, poate fi adesea o provocare pentru a arăta volumele din munca noastră, deoarece suntem obișnuiți să vedem oamenii din față. Dar d..


7 sfaturi de top pentru a începe propria afacere

Sep 11, 2025

Dacă v-ați simțit blocat într-o rutină creativă, este posibil să meritați să aveți un moment pentru a vă bucura de car..


Îmbunătățiți-vă abilitățile de artă concepte în Photoshop

Sep 11, 2025

Pentru acest atelier, aș vrea să vă arăt un mod foarte distractiv de a schița personajele de la imaginația ta. Vă voi ară..


Master Instrumentul de pod

Sep 11, 2025

Care este instrumentul Bridge? Dacă sunteți nou la CGI, există prea multe instrumente de a alege dintr-o gamă a..


5 sfaturi pentru a vă îmbunătăți creațiile VR

Sep 11, 2025

Vertex Workshop Leader. Glen Southern. împărtășește sfaturile de top pentru a vă aj..


Cum se proiectează o copertă de carte în InDesign

Sep 11, 2025

Spunerea ar putea fi: "Nu judeca o carte prin coperta ei", dar designul unei acoperiri poate face, de fapt, să facă sau să spargă succesul unei cărți. Dacă sunteți ca mine, designul c..


Cum se creează un geofilter Snapchat în Photoshop

Sep 11, 2025

Clienții caută în mod constant noi modalități de angajare cu publicul. Geofilters Snapchat - suprapuneri de comunicare speciale - sunt o modalitate excelentă de a obține un brand în f..


Creați un caracter cu realismul stilizat

Sep 11, 2025

Flippednormals. Este un site condus de Henning Sanden și Morten Jaeger alături de slujbele lor de zi în VFX din Lo..


Categorii