Isiqulatho[Fihla][Bonisa]
Ingqondo ithelekiseka neenethiwekhi ze-neural. Lo ngumzekeliso oqhele ukusetyenziswa ukunceda umntu omtsha kumxholo ukuba aqonde izimvo ngasemva kokufunda koomatshini kunye neenethiwekhi ze-neural ezenziweyo.
Ngenxa yokuba kukho iileya ezininzi zezibalo kunye nokubalwa kwamanani okwenzeka emva komboniso, ukuchaza olu nxibelelwano njengomsebenzi wezibalo yeyona ndlela iphambili.
Le yeyabantu abanomdla wokufunda koomatshini kwaye bafuna ukubona ukuba ibhalwa njani ikhowudi yenethiwekhi ye-Python neural network.
Kweli nqaku, siza kubonisa indlela yokwakha inethiwekhi enzulu ye-neural (DNN) eqhagamshelwe ngokupheleleyo ukusuka ekuqaleni Python 3.
Isishwankathelo soLwakhiwo lweFayile yePython Neural Network Code yethu
Kuya kubakho iifayile ezintathu ezenziwe apha. Eyokuqala yifayile ye-nn.py elula, ekuza kuxutyushwa ngayo kwi-"Setting Up Helper Functions" kunye "noKwakha iNeural Network from Scratch."
Siza kuba nefayile ebizwa ngokuba yi-mnist loader.py yokulayisha idatha yovavanyo, njengoko kuchaziwe "kuLayisha iDatha ye-MNIST."
Ekugqibeleni, siya kuba nefayile ebizwa ngokuba yi-test.py eya kuqaliswa kwi-terminal ukuvavanya inethiwekhi yethu ye-neural.
Le fayile ichazwe ngokweenkcukacha "Ukuqhuba iiMvavanyo."
ufakelo
Ithala leencwadi leNumPy Python kufuneka likhutshelwe ukuze ulandele esi sifundo. Ungakwenza oku ngokusebenzisa lo myalelo ulandelayo kwi-terminal:
Ukuthathwa ngaphandle kweeModyuli kunye nokuseta umsebenzi woMncedi
Amathala eencwadi amabini kuphela esiwafunayo ngawe-random kunye ne-NumPy, esiya kuthi siyingenise kwangoko. Kubunzima bokuqala bothungelwano lwethu lwe-neural, siya kuzixuba sisebenzisa ithala leencwadi elingakhethiyo.
Ukukhawulezisa ukubala kwethu, siya kusebenzisa iNumPy okanye i-np (ngengqungquthela, ihlala ithathwa ngaphandle njenge-np). Imisebenzi yethu emibini yomncedisi iya kwenziwa emva kokungenisa kwethu ngaphandle. Imisebenzi emibini ye-sigmoid: enye kunye ne-sigmoid prime.
Uhlengahlengiso loLungiselelo luya kuhlela idatha kusetyenziswa umsebenzi we-sigmoid, ngelixa i-backpropagation iya kubala i-delta okanye i-gradient isebenzisa i-sigmoid prime function.
Ukudala iKlasi yeNethiwekhi
Ukwakha inethiwekhi ye-neural edityaniswe ngokupheleleyo yeyona nto iphambili kweli candelo. Iklasi yenethiwekhi iya kubandakanya yonke imisebenzi ezayo emva. Umsebenzi Object() { [ikhowudi yemveli] } iyakwenziwa ekuqaleni kudidi lwethu lomsebenzi womnatha.
Ingxabano enye, ubungakanani, bufunwa ngumsebenzi Object() { [ikhowudi yemveli] }. Ubungakanani obuguquguqukayo yingqokelela yamanani amanani amele inani leenodi zongeniso ezikhoyo kumaleko ngamnye wothungelwano lwethu lwe-neural.
Siqala iipropati ezine kwindlela yethu ye-__init__. Izinto eziguquguqukayo zegalelo, ubungakanani, zisetyenziselwa ukuseta uluhlu lweesayizi zomaleko kunye nenani leeleya, i-num layers, ngokulandelelanayo.
Inyathelo lokuqala kukwabela ngokungakhethiyo ucalucalulo lokuqala lwenethiwekhi yethu kumaleko ngamnye olandela umaleko wegalelo.
Ekugqibeleni, ikhonkco ngalinye phakathi kwegalelo kunye nemveliso yomaleko inobunzima bayo obuveliswe ngokungacwangciswanga. Np.Random.Randn() inika isampulu engacwangciswanga etsalwa kunikezelo oluqhelekileyo lomxholo.
Feed Forward Function
Kwinethiwekhi ye-neural, ulwazi luthunyelwa phambili ngumsebenzi we-feedforward. Ingxabano enye, a, ebonisa i-vector esebenzayo yangoku, iya kufunwa ngulo msebenzi.
Lo msebenzi uqikelela usetyenziso kumaleko ngamnye ngokuphinda-phinda phezu kwayo yonke imiba kunye neentsimbi kuthungelwano. Impendulo enikiweyo kukuxela kwangaphambili, okukukwenza kusebenze umaleko wokugqibela.
Ibhetshi encinci yokwehla kweGradient
Ihashe lomsebenzi weklasi yethu yeNethiwekhi yiGradient Descent. Kule nguqulo, sisebenzisa i-mini-batch (i-stochastic) ye-gradient descent, inguqu elungisiweyo ye-gradient descent.
Oku kubonisa ukuba ibhetshi encinci yamanqaku edatha iya kusetyenziswa ukuhlaziya imodeli yethu. Ezine ezifunekayo kunye nengxoxo enye yokuzikhethela igqithiselwe kule ndlela. Izinto ezine ezifunekayo ziseti yedatha yoqeqesho, inani leepochs, ubungakanani beebhetshi ezincinci, kunye nezinga lokufunda (eta).
Idatha yovavanyo iyafumaneka xa iceliwe. Siza kubonelela ngedatha yovavanyo xa ekugqibeleni sivavanya le nethiwekhi. Inani leisampulu kulo msebenzi limiselwa ekuqaleni kubude boluhlu emva kokuba idatha yoqeqesho iguqulelwe kuhlobo loluhlu.
Sikwasebenzisa inkqubo efanayo yokuvavanya idatha enikezelweyo. Oku kungenxa yokuba endaweni yokubuyiselwa kuthi njengoluhlu, ngokwenene zizip zoluhlu. Xa silayisha iisampulu zedatha ye-MNIST kamva, siya kufunda ngakumbi malunga noku.
Ukuba sinokuqinisekisa ukuba sibonelela ngazo zombini iindidi zedatha njengoluhlu, ke olu hlobo lokuphosa aluyomfuneko.
Nje ukuba sinayo idatha, sidlula kwii-epochs zoqeqesho kwi-loop. Ixesha loqeqesho ngumjikelo omnye kuphela woqeqesho lweneural network. Siqala ngokutshixiza idatha kwi-epoch nganye ukuqinisekisa ukungakhethi ngaphambi kokwenza uluhlu lweebhetshi ezincinci.
Uhlaziyo lwebhetshi encinci, ekuxoxwe ngayo ngezantsi, iya kubizwa kwibhetshi encinci nganye. Ukuchaneka kovavanyo kuya kubuyiselwa kwakhona ukuba idatha yovavanyo iyafumaneka.
Umsebenzi womncedisi ophuma kwiindleko
Masiphuhlise umsebenzi womncedisi obizwa ngokuba yindleko yokuqala ngaphambi kokuba siyile ikhowudi yokusasazwa komva. Ukuba senza impazamo kuluhlu lwethu lwemveliso, umsebenzi ophuma kwindleko uya kuyibonisa.
Ifuna amagalelo amabini: uluhlu lwemveliso olusebenzayo kunye nolungelelwaniso lukay lwamaxabiso emveliso alindelekileyo.
Umsebenzi wokusasaza umva
Ivektha yethu yangoku, ukwenza kusebenze, kunye nazo naziphi na ezinye iivektha, ii-activations, kunye ne-z-vectors, zs, kufuneka zonke zigcinwe engqondweni. Umaleko obizwa ngokuba ngumaleko wegalelo uvulwe kuqala.
Siza kujikeleza kwicala ngalinye kunye nobunzima emva kokuzibeka phezulu. I-loop nganye ibandakanya ukubala i-z vector njengemveliso yechaphaza lobunzima kunye nokusebenza, ukuyongeza kuluhlu lwe-zs, ukubala kwakhona ukuvuselela, kunye nokongeza ukuvuselela okuhlaziyiweyo kuluhlu lwezinto ezisebenzayo.
Ekugqibeleni, izibalo. I-delta, elingana nemposiso evela kumaleko angaphambili aphindwe nge-sigmoid prime yento yokugqibela ye-zs vectors, ibalwa ngaphambi kokuba siqale ukudlula kwethu ngasemva.
Umaleko wokugqibela we-nabla b umiselwe ukuba ube yi-delta, kwaye umaleko wokugqibela we-nabla w umiselwe ukuba ube yimveliso yamachaphaza e-delta kunye noluhlu lwesibini ukuya kokugqibela lwe-activation (iguqulwe ukuze senze izibalo) .
Siqhubela phambili njengangaphambili, siqala ngoluhlu lwesibini kwaye sigqibe ngowokugqibela, kwaye siphinda inkqubo emva kokugqiba ezi maleko zokugqibela. Iinablas ke zibuyiselwa njenge tuple.
Ukuhlaziya i-Mini-batch gradient ukuhla
Indlela yethu ye-SGD (i-stochastic gradient descent) ukusuka ngaphambi kokuba ifake uhlaziyo lwe-mini-batch. Kuba isetyenziswa kwi-SGD kodwa ikwafuna i-backprop, ndiye ndaxoxa ukuba ndingawubeka phi lo msebenzi.
Ekugqibeleni, ndenze ukhetho lokuyithumela apha. Iqala ngokuvelisa iivekhtha eziyi-0 zomkhethe kunye neentsimbi ze-nablas, njengoko wenzayo umsebenzi wethu wepropu.
Ifuna i-mini-batch kunye nereyithi yokufunda ye-eta njengamagalelo ayo amabini. Kwibhetshi encinci, emva koko sisebenzisa umsebenzi weprop ukufumana idelta yenabla uluhlu ngalunye lwegalelo ngalinye, x, kunye nemveliso, y. Izintlu ze-nabla zihlaziywa ngezi deltas.
Okokugqibela, sisebenzisa ireyithi yokufunda kunye ne-nablas ukuhlaziya iintsimbi zothungelwano kunye nokungathathi cala. Ixabiso ngalinye lihlaziywa kwelona xabiso lamva nje, ngaphantsi kwezinga lokufunda, liphindaphindwe ngesayizi ye-minibatch, kwaye yongezwe kwixabiso le-nabla.
Vavanya umsebenzi
Umsebenzi wokuvavanya ngowokugqibela ekufuneka siwubhale. Idatha yovavanyo lolona galelo lodwa kulo msebenzi. Kulo msebenzi, sithelekisa kuphela iziphumo zothungelwano kunye nesiphumo esilindelekileyo, y. Ngokutyisa igalelo, x, phambili, iziphumo zothungelwano zichongwa.
Gqibezela iKhowudi
Xa sidibanisa yonke ikhowudi, yile ndlela ibonakala ngayo.
Uvavanyo lweNeural Network
Ilayisha idatha ye-MNIST
The Idatha ye-MNIST ikwi-.pkl.gz ifomathi, esiya kuyivula sisebenzisa i-GZIP kwaye silayishe ngepickle. Masibhale indlela ekhawulezayo yokulayisha le datha njenge-tuple yobungakanani besithathu, yahlulwe kuqeqesho, ukuqinisekiswa, kunye nedatha yovavanyo.
Ukwenza idata yethu ibe lula ukuyilawula, siza kubhala omnye umsebenzi wokufakela ikhowudi uy kuluhlu lwezinto ezili-10. Uluhlu luya kuba ngu-0 zonke ngaphandle kwe-1 ehambelana nedijithi yomfanekiso.
Siza kusebenzisa idatha yomthwalo osisiseko kunye nendlela enye eshushu yekhowudi yokulayisha idatha yethu kwifomathi efundekayo. Omnye umsebenzi uya kubhalwa ozakuguqula amaxabiso ethu ka x abe kuluhlu lobungakanani 784, ehambelana nomfanekiso wama 784 pixels, kunye nexabiso lethu y kwifom yevector efakwe kwikhowudi enye.
Emva koko sizakudibanisa u-x kunye no-y amaxabiso ukuze isalathiso esinye singqinelane nesinye. Oku kusebenza kuqeqesho, ukuqinisekiswa, kunye neeseti zedatha yovavanyo. Emva koko sibuyisela idatha etshintshileyo.
Ukubaleka iiMvavanyo
Siza kwenza ifayile entsha ebizwa ngokuba “yi-mnist loader” eza kungenisa zombini inethiwekhi ye-neural esiyiseke ngaphambili (i-nn elula) kunye neseti yedatha ye-MNIST isilayishi phambi kokuba siqalise ukuvavanya.
Kule fayile, konke okufuneka sikwenze kukungenisa idatha, ukwakha inethiwekhi kunye nobukhulu bomgca we-input ye-784 kunye nobukhulu be-output layer ye-10, sebenzisa umsebenzi we-SGD wenethiwekhi kwidatha yoqeqesho, uze uyivavanye usebenzisa idatha yovavanyo.
Gcina ukhumbula ukuba kuluhlu lwethu lweeleya zegalelo, akwenzi mahluko ukuba nawaphi amanani aphakathi kwe-784 kunye ne-10. nje igalelo kunye nobukhulu bemveliso zilungisiwe.
Imigangatho emithathu ayiyomfuneko; sinokusebenzisa ezine, ezintlanu, okanye nokuba zimbini nje. Yonwabele ukuyilinga.
isiphelo
Apha, sisebenzisa iPython 3, senza inethiwekhi ye-neural ukusuka ekuqaleni. Kunye nezibalo ezikwinqanaba eliphezulu, siphinde saxoxa ngeenkcukacha zophunyezo.
Saqala ngokuphumeza imisebenzi yomncedisi. Ukuze ii-neuron zisebenze, i-sigmoid kunye ne-sigmoid prime function ibalulekile. Emva koko siye sasebenzisa umsebenzi we-feedforward, eyona nkqubo isisiseko yokondla idatha kwinethiwekhi ye-neural.
Emva koko, senze umsebenzi wokuhla kwe-gradient kwiPython, injini eqhuba inethiwekhi yethu ye-neural. Ukufumana "i-minima yendawo" kunye nokwandisa ubunzima kunye nokuthambekela kwabo, inethiwekhi yethu ye-neural isebenzisa ukwehla kwe-gradient. Senze umsebenzi wokusasaza umva usebenzisa ukuhla komgangatho.
Ngokuzisa uhlaziyo xa iziphumo zingahambelani neelebhile ezifanelekileyo, lo msebenzi wenza ukuba inethiwekhi ye-neural "ifunde."
Ekugqibeleni, sibeka iPython yethu entsha inethiwekhi yomnatha kuvavanyo usebenzisa isethi yedatha ye-MNIST. Yonke into yayihamba kakuhle.
Ukonwaba ngokuNwabileyo!
Shiya iMpendulo