Brain.js to fantastyczny sposób na zbudowanie sieci neuronowej. Wystarczy umieścić, sieć neuronowa jest metodą uczenia się maszynowego, który działa w podobny sposób na ludzki mózg. Biorąc pod uwagę prawidłową odpowiedź na pytanie (jak ", która opcja wybierze ten użytkownik?"), Powoli dowiaduje się wzorca i relacji między wejściami i odpowiedziami. Jednym z przykładów sieci neuronowej jest system rozpoznawania twarzy Facebooka, Deepface.
Ale ze względu na złożony język domeny sieci neuronowych i pozornie stromych krzywej uczenia się, może być trudne do rozpoczęcia rozpoczęcia.
W tym samouczku destylujemy teorię do potrzeb, aby dowiedzieć się, a ważne, utknęło w rzeczywistości za pomocą brain.js do stworzenia sieci neuronowej. Do końca będziesz mieć aplikację internetową, która zadaje pytania wielokrotnego wyboru na temat optymizmu użytkownika. Po przesłaniu, odpowiedzi te szkolą sieć neuronową do prawdopodobieństwa naszego użytkownika wybierając każdą opcję na nowe pytanie.
Chcesz bardziej przydatne narzędzia do projektowania stron internetowych? Zobacz nasz post na wybieranie idealnego Kreator strony internetowej . Lub jeśli potrzebujesz gdzieś do bezpiecznego przechowywania plików, sprawdź nasz wybór najlepszych magazyn w chmurze . Planujesz złożoną stronę internetową? Będziesz potrzebował solidnego hosting usługa, która może nadążyć.
Pobierz pliki potrzebne do tego samouczka.
Po pierwsze, pobierz i zainstaluj niezbędne zależności. Ten samouczek zakłada, że masz pracującą wiedzę na reakcję lub równoważne odwzorowanie do preferowanej alternatywy.
Utwórz aplikację Reaction za pomocą żądanej metody. Możesz spróbować Facebooka Utwórz aplikację Narzędzie, zainstalowane przy użyciu następujących czynności:
npm install create-react-app -g
Teraz możemy zbudować, zainstalować brain.js i rozpocząć naszą aplikację:
NPX Create-React-React-APP Optymizm-NN
CD Optimizm-NN
NPM Zainstaluj BrainJs.
NPM Start
Zamierzamy wykonywać obliczenia sieci neuronowej w przeglądarce. Sieci neuronowe są intensywne zasobów i należy przeładować na serwer. Jednak ten sposób szybki jest skonfigurowany i w porządku dla naszych podstawowych potrzeb. Teraz dodajmy brain.js do naszego punktu wejścia (w moim przypadku app.js).
Importuj mózg z "brain.js";
Musimy zdefiniować nasze pytania szkoleniowe dalej. W osobnym miejscu Pytania Plik, będziemy potrzebować szkolenia i ValidationQuestions. szyk. Możesz znaleźć moją listę na git repo lub stworzyć własne. Im więcej pytań szkoleniowych, tym dokładniejsze wyniki. Pamiętaj, aby zaimportować je do punktu wejścia.
Eksportuj konstrukcje = [
{
ID: "Q1",
Pytanie: "Czy często widzisz najlepsze rzeczy?",
Opcje: [
{ID: 'Q1a', Etykieta: "Nie tak naprawdę", Wartość: 0,2,},
{ID: 'Q1B', Etykieta: "Zawsze", wartość: 1,0,},
{ID: 'Q1C', Etykieta: "Zazwyczaj, tak", wartość: 0,7,},
{ID: 'Q1D', Etykieta: "Nigdy!", Wartość: 0,0,},
],
},
];
Dla obu macierzy potrzebujemy pytania, tablicę czterech opcji, które zawierają etykietę i wartość optymizmu. Ta wartość będzie wejściem dla naszej sieci neuronowej.
Upewnij się, że zmieniasz zamówienie i saldo wartości, lub sieć neuronowa może skupić się zbyt wiele w indeksie opcji w tablicy! Nasza sieć neuronowa trwa cztery wejścia i daje cztery wyjścia. Nasze dane szkoleniowe muszą pasować do tego, więc w naszym konstruktorze potrzebujemy jakiegoś stanu dla quizu i opcji użytkownika:
to.state = {
Szlifierki: Szkolenia. Mapa (() = & gt; tablica (4). Fill (0)),
Szkolenie: Fałsz,
Prognozy: Udecznione,
};
Inicjalizacja Szlifierki tworzy tablicę dla każdego pytania zawierającego [0, 0, 0, 0] - nasz domyślny stan bez wyboru. Będziemy musieli zainicjować naszą sieć neuronową - tylko jedna linia z brain.js:
ITS.NET = New Brain.neuralNetwork ({Hiddenlayers: });
Aby zbudować ramy dla naszego quizu, musimy pętli naszych pytań i opcji szkoleniowych. Jest to dość pełne i niezbyt interesujące, więc podam przykład, aby dążyć do Ciebie, aby zmienić:
Render () {
powrót (
& lt; main & gt;
& lt; forma onsubmit = {ta.onsubmit} & gt;
[. . .] // Iterate na pytania i wzmacniacz; Opcje
& lt; div classname = "pytanie" & gt;
& lt; h4 & gt; {pytanie} & lt; / h4 & gt;
& lt; div classname = "Opcje" & gt;
& LT; Label HTMLFOR = {IPITID} & GT;
& lt; span & gt; {etykieta} & lt; / span & gt;
& lt; wejście
Type = "radio"
wymagany
Nazwa = {Pytanii}
id = {opcjonalna}
sprawdzone = {() = & gt; to.Isoptionchecked (pytanieIndex, optiindex)}
onchange = {() = & gt; to.onoptionchange (pytanie, opcjonatex)}
/ & gt;
& LT; / Label & GT;
[. . .]
& lt; / div & gt;
& lt; / div & gt;
[. . .]
& lt; przycisk Type = "Prześlij" & GT; Prześlij
Jeśli jesteś nowy, aby zareagować, zobacz dokumentacja do form budowlanych.
Możemy napisać nasze isoptionchecked. i onoptionchange. Funkcje Dalej:
Isoptionchecked = (pytanie, opcjonalnie) = & gt; (
to.state.traininganswers [pytanie] [OptionIndEx]! == 0
);
onoptionchange = (pytanie, opcjonalnie) = & gt; {
to.setstate (Prevate = & gt; {
const {treninganswer} = obiekt.Asign (Prevate, {});
Szlifierki [pytanie] = tablica (4). wypełnienie (0);
Szlifierki [pytanie] [OptionIndEx] = 1;
zwrócić {treninganswers};
});
};
Teraz, gdy nasz użytkownik kliknie opcję, aktualizujemy odpowiednie Szlifierki. tablica, aby mieć funkcję 1. W wybranym indeksie i zmień stan przycisku radiowy, aby pokazać go zgodnie z zaznaczonym.
Czas dodać naszą Onsubmit. Funkcja, gdzie budujemy dane szkoleniowe i szkolimy sieć neuronową:
OnSubmit = e = & gt; {
e.preventdefault ();
const {the shinganswers} = ten.
Const TrainingData = TrainishingStions.map ((q, I) = & gt; ({
Wejście: Q.Options.map (O = & GT; O.Value),
Wyjście: Szlifierki [I],
}));
to.setstate ({{
Trening: Prawda,
});
to.net.trainasync (treningData)
.Then (res = & gt; {
konsola.log (RES); // dziennik częstości błędów i iterations
to.getpredictions ()
});
}
Zapętlanie się szkolenia , Tworzymy tablice wejściowe i wyjściowe potrzebujemy. Dostajemy dane wejściowe, biorąc wartość optymizmu każdej opcji i otrzymujemy dane wyjściowe od patrzenia w Szlifierki. Tablica w tym samym indeksie co pytanie.
Potem zaktualizujemy stan Szkolenie: Prawda Aby poinformować użytkownika, że sieć neuronowa uczy się. W zależności od mocy przetwarzania urządzenia klienckiego i ile masz pytań, proces może potrwać kilka sekund, minut lub dłużej!
Wreszcie przekazujemy dane treningowe do naszej sieci neuronowej i opowiemy go, aby trenować asynchronicznie. Zwraca to obietnicę, która jest spełniona, gdy sieć znalazła wzór lub zrezygnować.
Zachowaj oko na szybkość zalogowania się Trainasync. . Idealnie powinien wynosić od 0 - 0,05. Jeśli jest wyższy, sprawdź swoje dane treningowe.
Stamtąd możemy uzyskać nasze prognozy:
GetPredictions = () = & gt; {
Const prognozy = WalidacjaQuestions.map (Q = & GT;
to.net.run (Q.Options.map (O = & GT; O.Value))
));
to.setstate ({{
Szkolenie: Fałsz,
prognozy,
});
}
Za pomocą net.run. Zapytamy naszą nowo wyszkoloną sieć neuronową, aby dać nam swoje prognozy dla każdego z pytań walidacyjnych, które zdefiniowaliśmy wcześniej.
Dla wielkiego finału dodajemy naszą logikę obciążenia warunkowego i przedstawić znajomość użytkownikowi.
renderowanie() {
const {trening, prognozy} = to.state;
Const ValidationQuestion = ValidationQuestions ;
powrót (
& lt; main & gt;
{trening i wzmacniacz; & amp; (
& LT; H2 & GT; Loading ... & LT; / H2 & GT;
)}
{! Prognozy i wzmacniacz; & Amp; ! Szkolenie i amp; & amp; (
[. . .] // formularz pytania szkoleniowe
)}
{prognozy i wzmacniacz; & amp; ! Szkolenie i amp; & amp; (
& lt; div & gt;
[I] * 100)}%} & LT; / Span & GT;
& LT; / Label & GT;
))}
& lt; / div & gt;
& lt; / div & gt;
& lt; / div & gt;
)}
& lt; / main & gt;
);
}
}
Teraz masz podstawowe ramy dla quizu, spróbuj przedłużyć go z następującymi:
Znajdź rzeczywistą szybkość błędu swojej sieci neuronowej, pozwalając użytkownikom odpowiedzieć na pytania walidacyjne. Zobacz, ile razy wybrali najlepiej.
Trenuj sieć neuronową z tymi dodatkowymi odpowiedziami i sprawdzić, czy możesz poprawić dokładność.
Przenieś obliczenia sieci neuronowej na serwerze węzła z brain.js funkcjonować() i tajson () metody.
Ten artykuł pierwotnie pojawił się w wydaniu 321 magazyn netto. , wiodący na świecie magazyn internetowy. Kup problem 321. lub Subskrybuj netto. .
Czytaj więcej:
(Kredyt obrazu: Facebook) Ta samouczek bębnów Instagram będzie miał korzystanie z funkcji wideo jak profesjonalis..
(Kredyt obrazu: szkic grawitacji) Szkic grawitacji, narzędzie do projektowania i modelowania dla Creatives VR, konty..
Projektant powinowactwa jest popularne Sztuka wektorowa narzędzie. Jak również wersje Mac i Windows,..
Kiedy byłem pierwszym uczeniem się tworzyć platformy postaci w Maya Way z powrotem w 2002 r. Podczas pracy na PlayStation 2 ty..
Strona 1 z 2: Strona 1 Strona 1 Strona 2 Ten warsztat wprowadzi Ci�..
FIGMA to narzędzie graficzne dla projektantów interfejsu użytkownika. Ma prosty interfejs i umożliwia współpracę z kolegami z kolegami z drużyny. Jeśli chcesz pracować w trybie offl..
Możesz łatwo uzyskać przytłoczony po raz pierwszy, w którym pracujesz z futrem 3d art. oprogramowanie. W tym ..