Werrej[Aħbi][Uri]
Il-moħħ huwa komparabbli man-netwerks newrali. Din hija l-analoġija li tipikament tintuża biex tassisti lil xi ħadd ġdid fis-suġġett biex jifhem l-ideat wara t-tagħlim tal-magni u n-netwerks newrali artifiċjali.
Minħabba li hemm diversi saffi ta 'komputazzjonijiet matematiċi u statistiċi għaddejjin wara l-kwinti, id-definizzjoni ta' dawn in-netwerks bħala funzjoni matematika hija metodu aktar avvanzat.
Dan huwa għan-nies li huma attwalment interessati fit-tagħlim tal-magni u jridu jaraw kif jinkiteb il-kodiċi tan-netwerk newrali Python.
F'dan l-artikolu, ser nuru kif nibnu netwerk newrali profond (DNN) kompletament konness mill-bidu nett. Python 3.
Ħarsa ġenerali lejn l-Istruttura tal-Fajl għall-Kodiċi tan-Netwerk Neural Python tagħna
Se jkun hemm tliet fajls maħluqa hawn. L-ewwel huwa l-fajl nn.py sempliċi, li se jiġi diskuss fi "Twaqqif ta 'Funzjonijiet Helper" u "Bini tan-Netwerk Newrali mill-bidu."
Ikollna wkoll fajl bl-isem mnist loader.py biex jgħabbi d-dejta tat-test, kif deskritt f’“Tagħbija tad-Data MNIST.”
Fl-aħħarnett, se jkollna fajl bl-isem test.py li se jitnieda fit-terminal biex jittestja n-netwerk newrali tagħna.
Dan il-fajl huwa deskritt fid-dettall fi "Testijiet ta' Tmexxija."
installazzjoni
Il-librerija NumPy Python trid titniżżel sabiex issegwi dan it-tutorja. Tista 'twettaq dan billi tuża l-kmand li ġej fuq it-terminal:
L-importazzjoni tal-Moduli u t-twaqqif tal-funzjoni Helper
L-uniċi żewġ libreriji li neħtieġu huma każwali u NumPy, li aħna se nimportaw minnufih. Għall-piżijiet inizjali tan-netwerk newrali tagħna, aħna ser shuffle minnhom billi tuża l-librerija każwali.
Sabiex nħaffu l-komputazzjonijiet tagħna, aħna ser nużaw NumPy jew np (b'konvenzjoni, ħafna drabi jiġi importat bħala np). Iż-żewġ funzjonijiet helper tagħna se jsiru wara l-importazzjonijiet tagħna. Żewġ funzjonijiet sigmojde: wieħed u sigmoid prime.
Ir-rigressjoni loġistika se tikklassifika d-data bl-użu tal-funzjoni sigmoid, filwaqt li backpropagation se tikkalkula d-delta jew gradjent bl-użu tal-funzjoni prime sigmoid.
Ħolqien tal-Klassi tan-Netwerk
Il-bini ta 'netwerk newrali kompletament konness huwa l-uniku fokus ta' din it-taqsima. Il-klassi tan-netwerk se tinkludi l-funzjonijiet kollha li jiġu wara. Il-funzjoni Object() { [kodiċi nattiv] } se tinħoloq inizjalment fil-klassi tan-netwerk tagħna.
Argument wieħed, daqsijiet, huwa meħtieġ mill-funzjoni Object() { [kodiċi nattiv] }. Il-varjabbli tad-daqsijiet hija ġabra ta 'valuri numeriċi li tirrappreżenta n-numru ta' nodi ta 'input preżenti f'kull saff tan-netwerk newrali tagħna.
Aħna initialize erba 'proprjetajiet fil-metodu __init__ tagħna. Il-varjabbli tal-input, id-daqsijiet, huma użati biex jistabbilixxu l-lista ta 'daqsijiet tas-saff u n-numru ta' saffi, saffi num, rispettivament.
L-ewwel pass huwa li tassenja b'mod każwali l-preġudizzji inizjali tan-netwerk tagħna għal kull saff li jsegwi s-saff tal-input.
Fl-aħħarnett, kull rabta bejn is-saffi ta 'input u output għandha l-piżijiet tagħha ġġenerati b'mod każwali. Np.Random.Randn() jagħti kampjun każwali meħud mid-distribuzzjoni normali għall-kuntest.
Feed Forward Funzjoni
F'netwerk newrali, l-informazzjoni tintbagħat 'il quddiem mill-funzjoni ta' feedforward. Argument wieħed, a, li jindika l-vettur tal-attivazzjoni attwali, se jkun meħtieġ minn din il-funzjoni.
Din il-funzjoni tistma l-attivazzjonijiet f'kull saff billi tgħaddi fuq il-preġudizzji u l-piżijiet kollha fin-netwerk. It-tweġiba mogħtija hija l-previżjoni, li hija l-attivazzjonijiet tal-aħħar saff.
Inżul Grajent Mini-lott
Ix-xogħol tal-klassi tan-Netwerk tagħna huwa l-Inżul Gradjent. F'din il-verżjoni, nużaw inżul gradjent mini-lott (stokastiku), varjazzjoni modifikata ta 'dixxendenza gradjent.
Dan jindika li lott żgħir ta 'punti tad-dejta se jintuża biex taġġorna l-mudell tagħna. Erba 'argument meħtieġ u wieħed fakultattiv huma mgħoddija lil dan il-metodu. L-erba 'varjabbli meħtieġa huma s-sett tad-dejta tat-taħriġ, in-numru ta' epoki, id-daqs tal-mini-lottijiet, u r-rata ta 'tagħlim (eta).
Id-dejta tat-test hija disponibbli fuq talba. Aħna ser nipprovdu data tat-test meta eventwalment nevalwaw dan in-netwerk. In-numru ta 'kampjuni f'din il-funzjoni huwa inizjalment stabbilit għat-tul tal-lista ladarba d-dejta tat-taħriġ tkun ġiet trasformata f'tip ta' lista.
Aħna napplikaw ukoll l-istess proċess għat-test tad-data li tingħata pulzieri Dan għaliex minflok ma jiġu rritornati lilna bħala listi, huma verament zips ta 'listi. Meta ngħabbew il-kampjuni tad-dejta MNIST aktar tard, nitgħallmu aktar dwar dan.
Jekk nistgħu niżguraw li nipprovdu ż-żewġ tipi ta 'dejta bħala listi, allura dan it-tip-casting mhux neċessarjament essenzjali.
Ladarba jkollna d-dejta, nimxu fuq l-epoki tat-taħriġ f'linja. Perjodu ta 'taħriġ huwa rawnd wieħed biss ta' taħriġ tan-netwerk newrali. L-ewwel naħdmu d-dejta f'kull epoka biex niżguraw l-addoċċ qabel nagħmlu lista ta 'lottijiet żgħar.
Il-funzjoni tal-mini-lott tal-aġġornament, li hija diskussa hawn taħt, se tissejjaħ għal kull mini-lott. L-eżattezza tat-test tiġi rritornata wkoll jekk id-dejta tat-test tkun disponibbli.
Funzjoni helper derivata mill-ispiża
Ejja niżviluppaw funzjoni helper imsejħa derivattiva tal-ispiża l-ewwel qabel ma verament noħolqu l-kodiċi ta 'backpropagation. Jekk nagħmlu żball fis-saff tal-output tagħna, il-funzjoni tad-derivattiva tal-ispiża turiha.
Jeħtieġ żewġ inputs: il-firxa tal-attivazzjonijiet tal-output u l-koordinati y tal-valuri tal-output antiċipati.
Funzjoni ta 'backpropagation
Il-vettur ta' attivazzjoni preżenti tagħna, l-attivazzjoni, kif ukoll kwalunkwe vectors ta' attivazzjoni, attivazzjonijiet, u z-vectors, zs, għandhom jinżammu kollha f'moħħhom. Saff imsejjaħ is-saff tal-input jiġi attivat l-ewwel.
Aħna ser loop permezz ta 'kull preġudizzju u piż wara t-tqegħid tagħhom up. Kull linja tinvolvi l-kalkolu tal-vettur z bħala l-prodott bil-tikek tal-piżijiet u l-attivazzjoni, li żżidha mal-lista ta 'zs, tikkalkula mill-ġdid l-attivazzjoni, u żżid l-attivazzjoni aġġornata mal-lista ta' attivazzjonijiet.
Fl-aħħarnett, il-matematika. Id-delta, li hija ugwali għall-iżball mis-saff ta 'qabel immultiplikat bis-sigmoid prime tal-aħħar element tal-vettori zs, huwa kkalkulat qabel ma nibdew il-pass lura tagħna.
L-aħħar saff ta 'nabla b huwa ssettjat biex ikun id-delta, u s-saff finali ta' nabla w huwa ssettjat biex ikun il-prodott bil-tikek tad-delta u t-tieni għall-aħħar saff ta 'attivazzjonijiet (traspost sabiex inkunu nistgħu fil-fatt nagħmlu l-matematika) .
Nipproċedu bħal qabel, nibdew bit-tieni saff u nikkonkludu bl-aħħar, u rrepeti l-proċess wara li tlesti dawn l-aħħar saffi. In-nablas imbagħad jingħataw lura bħala tuple.
Aġġornament inżul gradjent Mini-lott
Il-metodu SGD tagħna (inżul ta 'gradjent stochastic) minn qabel jinkorpora aġġornament ta' mini-lott. Peress li huwa utilizzat f'SGD iżda jeħtieġ ukoll backprop, iddiskutejt fejn tpoġġi din il-funzjoni.
Fl-aħħarnett, għamilt l-għażla li nippubblikaha hawn. Jibda billi jiġġenera 0 vettori tan-nablas tal-preġudizzji u l-piżijiet, bħalma għamlet il-funzjoni backprop tagħna.
Hija teħtieġ il-mini-lott u r-rata ta 'tagħlim eta bħala żewġ inputs tagħha. Fil-mini-lott, aħna mbagħad nużaw il-funzjoni backprop biex niksbu d-delta ta 'kull array nabla għal kull input, x, u output, y. Il-listi nabla mbagħad jiġu aġġornati b'dawn id-deltas.
Fl-aħħarnett, nużaw ir-rata tat-tagħlim u n-nablas biex naġġornaw il-piżijiet u l-preġudizzji tan-netwerk. Kull valur huwa aġġornat għall-valur l-aktar reċenti, anqas ir-rata ta 'tagħlim, immultiplikat bid-daqs tal-minibatch, u mbagħad miżjud mal-valur nabla.
Evalwa l-funzjoni
Il-funzjoni tevalwa hija l-aħħar waħda li għandna bżonn niktbu. Id-dejta tat-test hija l-uniku input għal din il-funzjoni. F'din il-funzjoni, aħna nqabblu biss l-outputs tan-netwerk mar-riżultat antiċipat, y. Billi tmigħ l-input, x, 'il quddiem, l-outputs tan-netwerk huma determinati.
Imla l-Kodiċi
Meta ngħaqqdu l-kodiċi kollu, dan huwa kif jidher.
Ittestjar tan-Netwerk Newrali
Tagħbija tad-dejta tal-MNIST
il Data tal-MNIST huwa fil-format .pkl.gz, li aħna ser niftħu bl-użu ta 'GZIP u tagħbija bil-pickle. Ejja niktbu metodu ta 'malajr biex tagħbija din id-dejta bħala tuple ta' daqs tlieta, maqsuma f'dejta ta 'taħriġ, validazzjoni u test.
Biex tagħmel id-data tagħna aktar faċli biex timmaniġġjaha, aħna ser niktbu funzjoni oħra biex tikkodifika l-y f'firxa ta '10 oġġetti. L-array se jkun 0s kollha ħlief għal 1 li taqbel maċ-ċifri xierqa tal-immaġni.
Aħna ser nużaw id-dejta bażika tat-tagħbija u metodu wieħed ta 'kodifikazzjoni sħun biex tagħbija d-dejta tagħna f'format li jinqara. Se tinkiteb funzjoni oħra li tikkonverti l-valuri x tagħna f'lista ta 'daqs 784, li taqbel mal-784 pixels tal-immaġni, u l-valuri y tagħna fil-forma ta' vettur waħda kodifikata sħuna tagħhom.
Imbagħad aħna ser ngħaqqdu l-valuri x u y b'tali mod li indiċi wieħed jaqbel mal-ieħor. Dan japplika għas-settijiet tad-dejta tat-taħriġ, tal-validazzjoni u tat-test. Imbagħad nirritornaw id-dejta mibdula.
Testijiet tat-Tmexxija
Aħna ser nagħmlu fajl ġdid imsejjaħ "mnist loader" li se jimporta kemm in-netwerk newrali li waqqafna qabel (nn sempliċi) kif ukoll il-loader tas-sett tad-dejta MNIST qabel ma nibdew nittestjaw.
F'dan il-fajl, kull ma rridu nagħmlu huwa li jimportaw id-dejta, nibnu netwerk b'daqs ta 'saff ta' input ta '784 u daqs ta' saff ta 'output ta' 10, imexxu l-funzjoni SGD tan-netwerk fuq id-dejta tat-taħriġ, imbagħad ittestjaha billi tuża d-dejta tat-test.
Żomm f'moħħok li għal-lista tagħna ta 'saffi ta' input, ma tagħmel l-ebda differenza x'inhuwa xi wieħed min-numri bejn 784 u 10. Nistgħu nibdlu s-saffi l-oħra b'kull mod li nixtiequ; biss id-daqsijiet tad-dħul u tal-ħruġ huma fissi.
Tliet saffi mhumiex meħtieġa; nistgħu nużaw erbgħa, ħamsa, jew saħansitra tnejn biss. Ħu gost tesperimenta biha.
konklużjoni
Hawnhekk, bl-użu ta 'Python 3, noħolqu netwerk newrali mill-bidu. Flimkien mal-matematika ta 'livell għoli, iddiskutejna wkoll l-ispeċifiċitajiet tal-implimentazzjoni.
Bdejna billi implimentazzjoni funzjonijiet helper. Biex in-newroni jaħdmu, is-sigmoid u l-funzjonijiet prime sigmoid huma kruċjali. Imbagħad inpoġġu fil-prattika l-funzjoni ta 'feedforward, li hija l-proċess fundamentali għall-għalf tad-dejta fin-netwerk newrali.
Sussegwentement, ħloqna l-funzjoni ta 'inżul gradjent f'Python, il-magna li tmexxi n-netwerk newrali tagħna. Sabiex jinstabu "minimi lokali" u jottimizzaw il-piżijiet u l-preġudizzji tagħhom, in-netwerk newrali tagħna juża dixxendenza tal-gradjent. Ħloqna l-funzjoni ta 'backpropagation bl-użu inżul gradjent.
Billi tagħti aġġornamenti meta l-outputs ma jaqblux mat-tikketti xierqa, din il-funzjoni tippermetti li n-netwerk newrali "jitgħallem."
Fl-aħħarnett, poġġejna l-Python ġdid fjamant tagħna newrali netwerk għat-test bl-użu tas-sett tad-dejta MNIST. Kollox ħadem bla xkiel.
Kodifikazzjoni kuntenta!
Ħalli Irrispondi