Bună ziua și bun venit la acest tutorial Python.
Bine, deci avem foarte interesant ca solul sa fie in fata noastra.
Vom începe prin crearea arhitecturii rețelei neuronale, adică vom face rețeaua neuronală
care va fi în centrul AI și care va readuce acțiunea la 90 de ani.
Deci, să facem asta.
Deoarece dorim ca rețeaua noastră neuronală să fie obiectivă, o să o facem clasă.
Și asta pentru că este mult mai convenabil.
Știți că clasa este modelul pe care vrem să-l construim.
Vrem să construim o rețea neuronală și trebuie să facem niște instrucțiuni care vor fi toate conținute
în clasă.
Și în această clasă vom face două funcții.
Mai întâi, funcția init este funcția care apare tot timpul când faceți clasă.
Și aceasta definește în esență variabila obiectului dvs. care este rețeaua neurală.
Știți variabilele atașate la obiect, spre deosebire de variabilele globale.
Și așa este în această funcție care va defini arhitectura noii rețele pe care o cunoașteți definind
stratul de intrare care va fi compus din cinci neuroni de intrare deoarece avem cinci dimensiuni pentru vectorul
codat al stărilor de intrare.
Atunci vom defini câteva straturi ascunse.
Poate că veți începe cu un strat ascuns și apoi veți fi bineveniți să încercați alte arhitecturi
ale rețelei neuronale.
Și apoi, bineînțeles, vom ajunge la stratul de ieșire care va conține acțiunile posibile pe care le
putem juca în fiecare moment.
Deci asta este exact ceea ce vom face în această funcție.
Și apoi vom face o altă funcție încă în interiorul clasei care va fi funcția forward
și care va fi funcția care va activa neuronii din rețeaua neuronală.
Știți că acest lucru va activa semnalele și deci vom folosi o funcție de activare
rectificată deoarece, desigur, avem de-a face cu o problemă pur neliniară și această funcție rectificată întrerupe liniaritatea.
Dar mai ales facem ca funcția Ford să returneze valorile q care sunt ieșirile rețelei.
Dar avem o valoare cheie pentru fiecare acțiune.
Și mai târziu vom reveni la acțiunea finală fie prin luarea valorilor cheie maxime, fie prin utilizarea
unei metode Max.
Vom vedea asta după aceea.
Deci, în acest tutorial vom începe prin implementarea funcției init și apoi
următorul va fi implementarea funcției forward.
Deci, să facem asta.
Mai întâi trebuie să introducem clasa noastră.
Așa că începem cu clasa și ne dăm un nume clasei noastre, unde putem să o numim rețea.
Și apoi în această clasă de rețea voi folosi o tehnică de programare a obiectelor care se numește moștenire
și care este doar de a moșteni de la toate instrumentele unei clase părinte.
Deci, clasa noastră de rețea pe care o vom face este un test pentru o clasă mai mare, care este.
Și acel modul.
Deci, doar pentru a moșteni de la toate instrumentele din această clasă modul care, desigur, instrumentele pentru a implementa
o rețea neuronală.
Deci, este un truc foarte puternic și de evoluție în programarea orientată pe obiecte, care se întâmplă cu succes.
Și chiar acum moștenim din această clasă părinte modul.
Bine și acum suntem gata să intrăm în clasă.
Așadar, apăs de două ori pentru că vom face două funcții și începem cu funcția
de sfârșit.
Deci, funcția init trebuie să o numim în acest fel cu doi pe acest curs apoi pe ea.
Și apoi, pentru a sublinia că este doar o sintaxă Python, așa trebuie să facem.
Și apoi trebuie să punem argumentele.
Deci, avem trei argumente.
Primul este un argument obligatoriu care este de fapt Eul și Sinele.
Nu există nici un mister care să se refere la obiectul care va fi creat din această clasă pe care o vom
face.
Știi că facem această clasă.
Este ca o instrucțiune un model al acestei rețele neuronale pe care dorim să o construim.
Și apoi, odată ce clasa este gata, putem face cât mai multe rețele cu dorințele noastre.
Și fiecare dintre aceste noi rețele va fi un obiect al acestei clase și din moment
ce vom folosi obiectul pentru alte scopuri, avem nevoie, dar care sunt variabilele obiectului, iar Spudis folosim acest sine
aici pentru a specifica că noi se referă la obiect.
Deci ori de câte ori doresc să folosesc disponibil din obiectul meu, voi folosi eu înaintea variabilei pentru a
specifica că aceasta este o variabilă a obiectului.
În regulă, acesta este primul argument și apoi avem două alte argumente
care sunt, desigur, numărul de neuroni de intrare și numărul de neuroni de ieșire.
Deci, numărul de neuroni de intrare o vom numi dimensiune de intrare și de fapt cinci, deoarece
vectorii de intrare au cinci dimensiuni până la trei semnale plus orientare plus minus orientare care sunt
vectori ai valorilor codificate care descriu o stare a mediului.
Aceste cinci valori sunt suficiente pentru a descrie o stare a mediului.
Ne-am fi putut gândi la mai puține valori sau la mai multe valori, dar asta am încercat și are sens, pentru
că de fapt avem nevoie de un semnal din stânga în fața noastră și unul în dreapta.
Știți când conducem o mașină am fi putut merge pentru un semnal de 360 ​​pe care îl cunoașteți
ca semnalele de la vârful mașinilor Google pe care le putem conduce în totalitate cu trei senzori și apoi avem această orientare
și minus orientarea către dvs. știți să urmăriți obiectivul pe care încercați să îl atingeți.
Și apoi avem, desigur, neuronii de ieșire din rețeaua noastră care corespund acțiunilor și avem trei acțiuni posibile
care merg în stânga mergând direct sau mergând bine.
Și, prin urmare, o voi numi și acțiunea și vor fi trei dintre ei.
In regula.
Până acum, trebuie să dăm nume doar intrărilor și apoi vom folosi aceste mingi de volei pentru a face condițiile
din interiorul rețelei neuronale.
În regulă atunci începeți să utilizați un alt truc cu torțe acest truc este o superfuncție care
este o funcție care de fapt moștenește din modul.
De aceea a trebuit să folosim moștenirea pentru a moșteni modulul.
Acesta este primul care va fi folosit.
Și, practic, folosim doar această superfuncție super-truc pentru a putea folosi instrumentele modulului care sunt
mult mai eficiente.
Și în interiorul superfuncției trebuie doar să precizez rețeaua.
Deci aceasta este clasa noastră de rețea chul pe care o cunoașteți deoarece aceasta moșteneste de la clasa parentală
modul și apoi obiectul nostru.
Si apoi adaug doar asta si sunt intr-o functie asa cum am numit-o.
Bine, deci este doar un truc care este doar de a folosi toate instrumentele pe care le am.
Și în modulul respectiv putem trece la pasul următor, care va specifica stratul de intrare.
Deci, practic ceea ce trebuie să fac este să introduc o nouă variabilă care va fi atașată la obiect
și această variabilă va conține numărul de neuroni de intrare.
Așadar, pentru a nu fi confundată cu mărimea intrării dimensiunii de intrare este argumentul funcției de sfârșit.
Dar aceasta nu este variabila care este atasata obiectului inca variabila care este atasata
obiectului.
După cum am menționat deja, trebuie să precizăm că este atașat de obiect, așa că folosim
un auto-predat și acum ne dăm un nume acestei prime variabile atașate obiectului.
Și astfel putem da pur și simplu același nume ca și intrarea.
Putem numi dimensiunea de intrare și vom spune că este egală cu argumentul o funcție care este mărimea intrării.
In regula.
De fiecare dată când creez un obiect din clasa de rețea și precizez dimensiunea de intrare, ca de
exemplu, pun 5.
Nu va fi de 5 aici și prin urmare variabila dimensiunii de intrare a obiectului nostru va avea valoarea de 5
deoarece această mărime de intrare aici va fi de 5 și, prin urmare, noua noastră rețea va avea 5 neuroni de intrare
în stratul de intrare.
In regula.
Și apoi este același pentru cealaltă variabilă pe care vrem să o atașăm obiectelor.
Și, după cum probabil ați ghicit, aceasta va fi o variabilă pentru numărul de neuroni de ieșire.
Și să spunem că ne luăm propriul nostru obiect și apoi dăm un nume acestei a doua variabile a obiectului
pe care îl vom numi și acțiunea.
Și acest lucru va fi egal cu acest argument dat fiind numărul de acțiuni care reprezintă numărul de neuroni
de ieșire.
Așa că am stabilit-o egală cu acțiunea de fapt și acțiunea va fi egală cu trei.
Prin urmare, variabila și acțiunea atașată obiectului nostru la o rețea vor primi valoarea de trei.
De fapt, putem vedea avertizare aici, spune numele nedefinit.
Și bine, asta pentru că aici folosim.
Și apoi comanda rapidă.
Și trebuie să folosim o scurtătură aici.
Și pentru începerea torței noastre și în Mudgal și apoi va dispărea.
Începem.
Perfect.
Chiar acum avem noi avertismente, toate avertismentele de aici sunt doar pentru a preciza că ceea ce importăm nu este
încă folosit.
În regulă, le vom folosi ulterior.
În regulă avem două variante pe care vrem să le definim pentru obiect.
Și aceasta va fi conexiunile complete între conexiunile complete dintre diferitele straturi ale rețelei
noastre neuronale.
Deci, de vreme ce acum vrem să construim o rețea neuronală compusă dintr-un singur cap în lumea lor,
vor exista două conexiuni complete.
Va exista o primă legătură completă între stratul de intrare și stratul ascuns.
Și o conexiune completă de o jumătate între deal și stratul de ieșire.
Deci, să începem cu prima conexiune completă.
O vom numi SE1 Și din nou, eu folosesc eu aici pentru a preciza că FC unul este o variabilă a obiectului meu pentru a
rezolva asta.
FC unul care va fi egal cu.
Și acum vom folosi modulul N în modul și vom folosi o funcție numită R liniar și aceasta este
exact pentru a face această legătură completă între neuroni și stratul de intrare la neuronii ascunși acolo.
Și ce vreau să spun prin conexiune completă.
Asta înseamnă că toți neuronii stratului de intrare vor fi conectați la toți neuronii
de aici.
Și astfel, pentru a face această conexiune, folosim această funcție liniară la care trebuie să punem niște argumente.
Și după cum puteți vedea aceste argumente sunt în trăsături.
Deci, este numărul de neuroni din prima lege pe care doriți să îi conectați la caracteristici care reprezintă numărul de
neuroni ai celui de-al doilea strat pe care doriți să îl conectați, acesta fiind stratul din dreapta
care este stratul ascuns și bicicleta este adevărată.
Așa că bicicleta este adevărată, vom păstra valoarea implicită care este pentru a avea o părtinire și nu doar o anumită greutate
atașată runului pe care trebuie să îl așteptăm, și o bias pentru fiecare strat.
Și așa bine să vedem ce trebuie să introducem.
Deci, primul argument în caracteristici este numărul de neuroni de intrare din stratul de intrare.
Și unde este?
Ei bine, asta e de fapt imprecis.
Acesta este argumentul funcției noastre init care mai târziu vom putea să luptăm cu orientarea celor trei semnale
și orientarea lui Mannus.
Deci, aici mergem.
Atunci când primele argumente și a pune dimensiunea și apoi al doilea argument este out caracteristici care este faptul că este numărul de neuroni pe care
dorim să avem în al doilea strat.
Cel de-al doilea strat care va fi complet conectat la primul strat.
Și acum întrebarea este cât de mulți neuroni vrem în acest strat ascuns.
Ei bine am făcut o mulțime de pregătire parametrilor.
Am făcut o mulțime de experimente.
Asta facem sau asta facem mai adânc.
În general, facem o mulțime de experimente pentru a vedea care ar fi cea mai bună rețea neuronală pentru problema
noastră specifică.
Și așa am încercat multe valori și am ajuns să aleg 30 de 30 de runde într-un strat ascuns și veți vedea că
cu acest număr vom obține câteva rezultate destul de bune, dar apoi nu ezitați să schimbați arhitectura
rețelei neuronale.
Simțiți-vă liber să vă jucați cu ea.
Puteți nu numai să modificați numărul de neuroni în loc și acolo, dar puteți adăuga și mai multe straturi, astfel
că poate veți obține o mașină chiar mai bună, dar 30 neuroni hinna ne vor aduce o rețea neuronală bună și
o cauză bună.
Deci, pentru asta mergem.
Și acolo mergem.
Avem prima noastră legătură completă într-adevăr cu această funcție liniară.
Facem conexiunea dintre stratul de intrare și piciorul ascuns.
Și acum timpul pentru a face a doua conexiune completă, care este conexiunea completă între stratul ascuns
și stratul de ieșire.
Așa că mergem.
Vom numi cea de-a doua conexiune completă la C2.
Vom merge acolo.
Și totuși acest lucru este disponibil pentru mai multe obiecte folosind Saphir.
Și apoi vom folosi din nou.
De fapt, putem copia acest lucru pentru că vom folosi modulul N în modul și apoi funcția liniară.
Dar atunci trebuie să schimbăm mai întâi argumentele.
Același lucru este primul număr de neuroni pe care îl vom avea în primul strat al conexiunii.
Deci asta este ascuns acolo.
Și, prin urmare, că este de 30 și apoi al doilea argument este numărul de neuroni în al doilea strat
al conexiunii și care corespunde stratului de ieșire și de ieșire acolo.
Iar neuronii reali, care mai târziu vor fi trei, pentru că avem trei acțiuni posibile, dar până acum trebuie să
folosim denumirile pe care le-am definit.
Acesta este numele argumentului funcției init și, prin urmare, introducem aici și acțiunea și acolo
mergem.
Mai întâi de toate conexiunile noastre tuple re.
Și în al doilea rând, este orice funcție Israel.
Deci, asta vom initializa obiectul ori de câte ori creem un obiect din clasa de rețea.
Și astfel, de îndată ce vom crea un obiect bine toate aceste variabile pentru variabile aici dimensiunea de intrare și de reacție.
Tu și doi veți fi definiți.
Și așa vom obține arhitectura rețelei noastre de animale pentru fiecare obiect pe care îl creăm.
Fiecare obiect va corespunde unei rețele neuronale cu cinci neuroni de intrare, 30 neuroni ascunși și trei neuroni
de ieșire.
Așa că mergem.
Am terminat cu această primă funcție și acum putem trece la a doua funcție care este
funcția forward și care va fi utilizată pentru a activa neuronii din rețeaua neurală folosind funcția de activare a
redresorului și mai ales pentru a reveni în cele din urmă la valorile cubului care sunt ieșirile unei singure rețele.
Așa că nu pot să aștept să fac acest lucru în tutorialul următor și până atunci eu.