Okuqukethwe[Fihla][Bonisa]
Ubuchopho buqhathaniswa namanethiwekhi e-neural. Lesi isifaniso esivame ukusetshenziselwa ukusiza umuntu omusha esihlokweni ukuze aqonde imibono engemuva kokufunda komshini namanethiwekhi okwenziwa kwe-neural.
Ngenxa yokuthi kunezendlalelo ezimbalwa zokubala zezibalo nezibalo ezenzeka ngemuva kwezigcawu, ukuchaza lawa manethiwekhi njengomsebenzi wezibalo kuyindlela ethuthuke kakhulu.
Lokhu okwabantu abanentshisekelo yokufunda ngomshini futhi abafuna ukubona ukuthi ikhodi yenethiwekhi ye-Python neural ibhalwa kanjani.
Kulesi sihloko, sizobonisa indlela yokwakha inethiwekhi ye-neural exhunywe ngokugcwele (DNN) kusukela ekuqaleni Python 3.
Uhlolojikelele Lwesakhiwo Sefayela Sekhodi Yethu Yenethiwekhi Ye-Python Neural
Kuzokwakhiwa amafayela amathathu lapha. Elokuqala ifayela le-nn.py elilula, okuzoxoxwa ngalo kokuthi “Ukusetha Imisebenzi Yomsizi” kanye “Nokwakha Inethiwekhi Ye-Neural kusuka ku-Scratch.”
Futhi sizoba nefayela eliqanjwe ngokuthi mnist loader.py ukuze silayishe idatha yokuhlola, njengoba kuchazwe kokuthi “Ilayisha Idatha ye-MNIST.”
Ekugcineni, sizoba nefayela elinegama elithi test.py elizokwethulwa kutheminali ukuze kuhlolwe inethiwekhi yethu ye-neural.
Leli fayela lichazwa ngokuningiliziwe kokuthi "Ukuhlola Okusebenzayo."
Ukufakwa
Umtapo wezincwadi we-NumPy Python kufanele ulandwe ukuze ulandele lesi sifundo. Ungakwenza lokhu ngokusebenzisa umyalo olandelayo kutheminali:
Ukungenisa amamojula nokumisa umsebenzi Womsizi
Imitapo yolwazi emibili kuphela esiyidingayo ingeyokungahleliwe kanye ne-NumPy, esizoyingenisa khona manje. Ukuze uthole izisindo zokuqala zenethiwekhi yethu ye-neural, sizozishova sisebenzisa umtapo wezincwadi ongahleliwe.
Ukuze sisheshise ukubala kwethu, sizosebenzisa i-NumPy noma i-np (ngokuvamile, ivame ukungeniswa njenge-np). Imisebenzi yethu yomsizi emibili izokwenziwa ngemva kokungenisa kwethu. Imisebenzi emibili ye-sigmoid: eyodwa kanye ne-sigmoid prime.
Ukuhlehliswa phansi kwezinto kuzohlukanisa idatha kusetshenziswa umsebenzi we-sigmoid, kuyilapho ukusakazwa kwe-backpropagation kuzobala i-delta noma i-gradient kusetshenziswa umsebenzi oyinhloko we-sigmoid.
Idala Ikilasi Lenethiwekhi
Ukwakha inethiwekhi ye-neural exhunywe ngokugcwele ukuphela kwalesi sigaba. Isigaba senethiwekhi sizohlanganisa yonke imisebenzi ezayo ngemuva. Umsebenzi othi Object() { [ikhodi yomdabu] } uzodalwa ekuqaleni esigabeni sethu senethiwekhi.
Ukungqubuzana okukodwa, osayizi, kudingwa umsebenzi othi Object() {[ikhodi yomdabu] }. Ukushintsha kosayizi iqoqo lamanani ezinombolo elimelela inani lamanodi okokufaka akhona kusendlalelo ngasinye senethiwekhi yethu ye-neural.
Siqala izici ezine ngendlela yethu __init__. Okuguquguqukayo okokufaka, osayizi, kusetshenziselwa ukusetha uhlu losayizi wesendlalelo kanye nenani lezendlalelo, izendlalelo eziyinombolo, ngokulandelana.
Isinyathelo sokuqala siwukunikeza ngokungahleliwe ukuchema kokuqala kwenethiwekhi yethu kusendlalelo ngasinye esilandela isendlalelo sokufaka.
Okokugcina, isixhumanisi ngasinye phakathi kwezingqimba zokufaka nokuphumayo sinesisindo esikhiqizwa ngokungahleliwe. I-Np.Random.Randn() inikeza isampula engahleliwe ethathwe ekusabalaliseni okuvamile komongo.
Okuphakelayo Phambili Umsebenzi
Kunethiwekhi ye-neural, ulwazi luthunyelwa phambili umsebenzi we-feedforward. I-agumenti eyodwa, a, ebonisa i-vector yamanje yokwenza kusebenze, izodingeka yilo msebenzi.
Lo msebenzi ulinganisela okwenziwa kusebenze kusendlalelo ngasinye ngokuphindaphinda kukho konke ukuchema nezisindo kunethiwekhi. Impendulo enikeziwe iwukubikezela, okuwukucushwa kongqimba lokugcina.
I-Mini-batch Gradient Ukwehla
Ihhashi lekilasi lethu Lenethiwekhi iGradient Descent. Kule nguqulo, sisebenzisa i-mini-batch (i-stochastic) ukwehla kwe-gradient, ukuhluka okushintshiwe kokwehla kwe-gradient.
Lokhu kubonisa ukuthi iqoqo elincane lamaphoyinti edatha lizosetshenziselwa ukubuyekeza imodeli yethu. Ezine ezidingekayo kanye ne-agumenti eyodwa yokuzikhethela kudluliselwa kule ndlela. Okuguquguqukayo okune okudingekayo isethi yedatha yokuqeqeshwa, inani lama-epoch, usayizi wamaqoqo amancane, kanye nezinga lokufunda (eta).
Idatha yokuhlola iyatholakala uma uyicela. Sizohlinzeka ngedatha yokuhlola uma ekugcineni sihlola le nethiwekhi. Inombolo yamasampuli kulo msebenzi iqale isethwe kubude bohlu uma idatha yokuqeqeshwa isiguqulelwe ekubeni uhlobo lohlu.
Siphinde futhi sisebenzise inqubo efanayo ukuze sihlole idatha enikezwe. Lokhu kungenxa yokuthi esikhundleni sokubuyiselwa kithi njengohlu, zingama-zip wohlu ngempela. Uma silayisha amasampula edatha ye-MNIST kamuva, sizofunda kabanzi mayelana nalokhu.
Uma singenza isiqiniseko sokuthi sihlinzeka ngazo zombili izinhlobo zedatha njengohlu, lokhu kusakazwa kohlobo akubalulekile ngempela.
Uma sesinedatha, sidlula izinkathi zokuqeqesha ngokulandelana. Isikhathi sokuqeqeshwa siwumjikelezo owodwa kuphela wokuqeqeshwa kwenethiwekhi ye-neural. Siqala ngokushova idatha enkathini ngayinye ukuze siqinisekise ukungahleleki ngaphambi kokwenza uhlu lwamaqoqo amancane.
Umsebenzi we-mini batch wokuvuselela, okuxoxwe ngawo ngezansi, uzobizwa ku-mini-batch ngayinye. Ukunemba kokuhlolwa nakho kuzobuyiswa uma idatha yokuhlola itholakala.
Umsebenzi wokusiza osuselwe kuzindleko
Masithuthukise umsebenzi womsizi obizwa ngokuthi i-cost derivative kuqala ngaphambi kokuthi sidale ngempela ikhodi yokusabalalisa emuva. Uma senza iphutha kungqimba yethu yokukhiphayo, umsebenzi wokuphuma kokunye wezindleko uzowubonisa.
Idinga okokufaka okubili: amalungu afanayo okukhiphayo kanye nezixhumanisi zika-y zamanani okukhiphayo alindelwe.
Umsebenzi we-backpropagation
Ivekhtha yethu yamanje yokwenza kusebenze, ukwenza kusebenze, kanye nanoma yimaphi amanye ama-vectors, ama-activations, nama-z-vectors, zs, konke kufanele kukhunjulwe. Isendlalelo esibizwa ngokuthi isendlalelo sokufaka siqalwa sisebenze.
Sizongena phakathi kokuchema ngakunye nesisindo ngemuva kokuwabeka. Iluphu ngayinye ihlanganisa ukubala ivekhtha engu-z njengomkhiqizo wamachashazi wezisindo nokwenza kusebenze, ukuyengeza kuhlu luka-zs, ukubala kabusha ukwenza kusebenze, nokwengeza ukwenza kusebenze okubuyekeziwe ohlwini lokuvula.
Ekugcineni, izibalo. I-delta, elingana nephutha elisuka kusendlalelo sangaphambilini eliphindwe nge-sigmoid prime yesici sokugcina se-zs vectors, ibalwa ngaphambi kokuthi siqale ukudlula kwethu emuva.
Ungqimba lokugcina lwe-nabla b lusethelwe ukuthi lube i-delta, futhi ungqimba lokugcina lwe-nabla w lusethelwe ukuthi lube umkhiqizo wamachashazi we-delta kanye nosendlalelo sesibili ukuya kokugcina sokusebenza (kuguquliwe ukuze sikwazi ukwenza izibalo) .
Siqhubeka njengakuqala, siqala ngesendlalelo sesibili futhi siphethe ngesokugcina, bese siphinda inqubo ngemva kokuqeda lezi zingqimba zokugcina. Ama-nablas abe esebuyiselwa njenge-tuple.
Ibuyekeza ukwehla kwe-gradient encane
Indlela yethu ye-SGD (i-stochastic gradient descent) yangaphambili ihlanganisa nokubuyekezwa kwenqwaba encane. Njengoba isetshenziswa ku-SGD kodwa futhi idinga i-backprop, ngiphikisana ngokuthi ngiwubeke kuphi lo msebenzi.
Ekugcineni, ngenze ukukhetha ukuyithumela lapha. Iqala ngokukhiqiza amavekhtha angu-0 we-nablas yokuchema nezisindo, njengoba kwenza umsebenzi wethu we-backprop.
Idinga i-mini-batch kanye nezinga lokufunda le-eta njengamagalelo ayo amabili. Ku-mini-batch, bese sisebenzisa umsebenzi we-backprop ukuze sithole i-delta ye-nabla yamalungu afanayo ngokokufaka ngakunye, x, nokukhiphayo, y. Izinhlu ze-nabla zibe sezibuyekezwa ngalawa ma-deltas.
Okokugcina, sisebenzisa izinga lokufunda kanye ne-nablas ukuze sibuyekeze izisindo zenethiwekhi nokuchema. Inani ngalinye libuyekezelwa kunani lakamuva kakhulu, kuncishiswe izinga lokufunda, liphindwe ngosayizi we-minibatch, bese lengezwa kunani le-nabla.
Linganisa umsebenzi
Umsebenzi wokuhlola ungowokugcina okudingeka siwubhale. Idatha yokuhlola iwukuphela kokufaka kwalo msebenzi. Kulo msebenzi, siqhathanisa kuphela okuphumayo kwenethiwekhi nomphumela olindelwe, y. Ngokuphakela okokufaka, x, phambili, okuphumayo kwenethiwekhi kunqunywa.
Qedela Ikhodi
Uma sihlanganisa yonke ikhodi, ibonakala kanjena.
Ihlola Neural Network
Ilayisha idatha ye-MNIST
The Idatha ye-MNIST ikufomethi ye-.pkl.gz, esizoyivula sisebenzisa i-GZIP futhi siyilayishe nge-pickle. Masibhale indlela esheshayo yokulayisha le datha njengekhophi yosayizi wesithathu, ihlukaniswe yaba ukuqeqeshwa, ukuqinisekiswa, kanye nedatha yokuhlola.
Ukuze senze idatha yethu iphatheke kalula, sizobhala omunye umsebenzi ukuze sibhale u-y ohlwini lwezinto ezingu-10. Uhlu luzoba wonke o-0 ngaphandle koku-1 okufana nedijithi efanele yesithombe.
Sizosebenzisa idatha eyisisekelo yokulayisha kanye nendlela eyodwa yombhalo wekhodi oshisayo ukuze silayishe idatha yethu ibe yifomethi efundekayo. Omunye umsebenzi uzobhalwa ozoguqula amanani ethu ka-x abe uhlu lukasayizi 784, oluhambisana namaphikseli angu-784 wesithombe, kanye namavelu ethu u-y abe yifomu lawo elilodwa le-vector efakwe ikhodi eshisayo.
Bese sizohlanganisa amanani okuthi x kanye no-y ukuze inkomba eyodwa ifane nenye. Lokhu kusebenza ekuqeqeshweni, ekuqinisekiseni, nasekuhloleni amasethi edatha. Sibe sesibuyisela idatha eshintshiwe.
Ukugijima Izivivinyo
Sizokwenza ifayela elisha elibizwa ngokuthi “i-mnist loader” elizongenisa kokubili inethiwekhi ye-neural esiyisungule ngaphambilini (i-simple nn) kanye nesilayishi sesethi yedatha ye-MNIST ngaphambi kokuba siqale ukuhlola.
Kuleli fayela, okudingeka sikwenze nje ukungenisa idatha, ukwakha inethiwekhi enosayizi wesendlalelo sokufakwayo esingu-784 kanye nosayizi wesendlalelo esiphumayo esingu-10, sebenzisa umsebenzi we-SGD wenethiwekhi kudatha yokuqeqeshwa, bese uyihlola usebenzisa idatha yokuhlola.
Khumbula ukuthi ohlwini lwethu lwezendlalelo zokufakwayo, akwenzi mehluko ukuthi yiziphi izinombolo eziphakathi kuka-784 no-10. Singazishintsha ezinye izendlalelo nganoma iyiphi indlela esithanda ngayo; osayizi bokufaka kanye nokuphumayo bayalungiswa.
Izendlalelo ezintathu azidingeki; singasebenzisa ezine, ezinhlanu, noma ezimbili nje. Kujabulele ukuyihlola.
Isiphetho
Lapha, sisebenzisa i-Python 3, sakha inethiwekhi ye-neural kusukela ekuqaleni. Kanye nezibalo ezisezingeni eliphezulu, siphinde saxoxa ngemininingwane yokuqaliswa.
Siqale ngokwenza imisebenzi yomsizi. Ukuze ama-neurons asebenze, imisebenzi eyinhloko ye-sigmoid kanye ne-sigmoid ibalulekile. Sibe sesisebenzisa umsebenzi we-feedforward, okuwuhlelo oluyisisekelo lokuphakela idatha kunethiwekhi ye-neural.
Okulandelayo, sidale umsebenzi wokwehla kwe-gradient ePython, injini eshayela inethiwekhi yethu ye-neural. Ukuze kutholwe "i-minima yendawo" futhi kusetshenziswe izisindo nokuchema kwazo, inethiwekhi yethu ye-neural isebenzisa ukwehla kwe-gradient. Sakhe umsebenzi wokusabalalisa emuva sisebenzisa ukwehla kwe-gradient.
Ngokuletha izibuyekezo lapho okuphumayo kungafani namalebula afanele, lo msebenzi wenza inethiwekhi ye-neural "ifunde."
Ekugcineni, sibeka iPython yethu entsha sha inethiwekhi ye-neural ekuhlolweni kusetshenziswa isethi yedatha ye-MNIST. Konke kwasebenza kahle.
Ukubhala ngekhodi okuhle!
shiya impendulo