Fizahan-takelaka[Afeno][Aseho]
Ny atidoha dia azo ampitahaina amin'ny tambajotra neural. Ity no fanoharana izay matetika ampiasaina hanampiana olona vaovao amin'ny lohahevitra hahatakatra ny hevitra ao ambadiky ny fianarana milina sy tambajotra neural artifisialy.
Satria misy sosona maromaro amin'ny kajy matematika sy statistika mandeha any ambadiky ny sehatra, ny famaritana ireo tambajotra ireo ho asa matematika dia fomba mandroso kokoa.
Ity dia natao ho an'ireo olona tena liana amin'ny fianarana milina ary te hahita ny fomba nanoratana ny kaody tambajotra neural Python.
Amin'ity lahatsoratra ity, hasehontsika ny fomba fananganana tambajotra neural lalina (DNN) mifamatotra tanteraka hatrany am-boalohany Python 3.
Fijerena ny firafitry ny rakitra ho an'ny Code Neural Network Python
Hisy rakitra telo hoforonina eto. Ny voalohany dia ny rakitra nn.py tsotra, izay horesahina ao amin'ny "Setting Up Helper Functions" sy "Fananganana ny tambajotra neural avy amin'ny Scratch."
Hanana fisie antsoina hoe mnist loader.py ihany koa isika hametahana ny angona fitsapana, araka ny voalaza ao amin'ny "Mampiditra Data MNIST."
Farany, hanana rakitra antsoina hoe test.py isika izay havoaka ao amin'ny terminal mba hitsapana ny tambajotra neural.
Ity rakitra ity dia voafaritra amin'ny antsipiriany ao amin'ny "Fitsapana mihazakazaka."
Installation
Ny tranomboky NumPy Python dia tsy maintsy alaina raha te hanaraka ity lesona ity. Azonao atao ny manatanteraka izany amin'ny fampiasana ity baiko manaraka ity amin'ny terminal:
Manafatra Modules sy mametraka ny asa Helper
Ny trano famakiam-boky roa ihany no takinay dia random sy NumPy, izay hanafatra avy hatrany. Ho an'ny lanja voalohany amin'ny tamba-jotra neural, dia hosokajintsika amin'ny fampiasana ny tranomboky kisendrasendra.
Mba hanafainganana ny kajy, dia mampiasa NumPy na np (amin'ny fivoriambe, matetika no nafarana toy ny np). Ny asa roa mpanampy anay dia hatao aorian'ny fanafarana anay. Fampiasa sigmoid roa: iray sy prime sigmoid.
Ny regression logistique dia hanasokajy ny angona amin'ny fampiasana ny asa sigmoid, raha ny backpropagation kosa dia hanao kajy ny delta na ny gradient amin'ny fampiasana ny asa sigmoid prime.
Mamorona kilasy tambajotra
Ny fananganana tambajotra neural mifamatotra tanteraka no ifantohan'ity fizarana ity. Ny kilasin'ny tambajotra dia ahitana ny asa rehetra aterak'izany. Ny asa Object() { [kaody teratany] } dia ho noforonina voalohany ao amin'ny kilasin'ny tambajotra.
Ny hevitra iray, ny habeny, dia takian'ny Object() { [code native] }. Ny fari-pahaizan'ny habe dia fitambaran'ny soatoavina isa izay maneho ny isan'ny node fampidirana ao amin'ny sosona tsirairay amin'ny tambajotra neural.
Manomboka fananana efatra isika amin'ny fomba __init__. Ny fari-pidirana, habe, dia ampiasaina hametrahana ny lisitry ny haben'ny sosona sy ny isan'ny sosona, num sosona, tsirairay avy.
Ny dingana voalohany dia ny manendry kisendrasendra ny fitongilanan'ny tambajotrantsika amin'ny sosona tsirairay manaraka ny sosona fampidirana.
Farany, ny rohy tsirairay eo amin'ny sosona fidirana sy fivoahana dia manana ny lanja avoakany kisendrasendra. Np.Random.Randn() dia manome santionany kisendrasendra nalaina avy amin'ny fizarana mahazatra ho an'ny contexte.
Fampiasana Feed forward
Ao amin'ny tambajotra neural, ny fampahalalana dia alefa amin'ny alàlan'ny fiasa feedforward. Ny tohan-kevitra iray, a, manondro ny vector fampahavitrihana amin'izao fotoana izao, dia takiana amin'ity fiasa ity.
Ity asa ity dia manombana ny fampahavitrihana isaky ny sosona amin'ny alàlan'ny famerimberenana ireo fitongilanana sy lanja rehetra ao amin'ny tambajotra. Ny valiny nomena dia ny vinavina, izay ny fampahavitrihana ny sosona farany.
Mini-batch Gradient Descent
Ny soavalin'ny kilasin'ny tambajotranay dia ny Gradient Descent. Amin'ity dikan-teny ity dia mampiasa fidinana gradient mini-batch (stochastic) izahay, fiovaovan'ny gradient novaina.
Izany dia manondro fa ampahany kely amin'ny teboka angona no hampiasaina hanavaozana ny modely. Efatra ilaina ary tohan-kevitra azo atao iray no ampitaina amin'ity fomba ity. Ny fari-piainana efatra takiana dia ny angon-drakitra fanofanana, ny isan'ny vanim-potoana, ny haben'ny andiany kely ary ny tahan'ny fianarana (eta).
Ny angona andrana dia azo alaina amin'ny fangatahana. Hanome angon-drakitra fitsapana izahay rehefa manombana ity tambajotra ity amin'ny farany. Ny isan'ny santionany amin'ity fiasa ity dia apetraka amin'ny halavan'ny lisitra voalohany rehefa niova ho karazana lisitra ny angona fanofanana.
Mampihatra ny dingana mitovy ihany koa izahay amin'ny fitsapana angon-drakitra omena. Izany dia satria raha tokony haverina aminay ho lisitra izy ireo, dia tena zips amin'ny lisitra izy ireo. Rehefa mampiditra ny santionan'ny angona MNIST isika any aoriana, dia hianatra bebe kokoa momba izany.
Raha azontsika atao ny manome antoka fa manome ireo karazana angona roa ireo ho lisitra, dia tsy voatery ho ilaina io karazana fanariana io.
Rehefa manana ny angon-drakitra isika dia mandeha amin'ny vanim-potoana fanofanana amin'ny loop. Ny fe-potoana fanofanana dia fihodinana iray monja amin'ny fiofanana amin'ny tambajotra neural. Atsofohy aloha ny angon-drakitra isaky ny vanim-potoana mba hiantohana ny tsy fahampiana alohan'ny hanaovana lisitry ny andiany kely.
Hantsoina ho an'ny mini-batch tsirairay ny fanavaozana mini batch, izay resahina etsy ambany. Haverina ihany koa ny fahamarinan'ny fitsapana raha misy ny angona fitsapana.
Fampiasana mpanampy amin'ny vidiny
Andeha isika hamolavola asa mpanampy antsoina hoe cost derivative aloha vao tena mamorona ny code backpropagation. Raha manao hadisoana isika amin'ny soson'ny fivoahana, dia hampiseho izany ny fiasan'ny derivative.
Mitaky fampidiran-dresaka roa izany: ny laharan'ny fampahavitrihana ny famoahana sy ny y-coordinate amin'ireo soatoavina vokarina andrasana.
Fampiasana backpropagation
Ny vector fampahavitrihana amin'izao fotoana izao, ny fampahavitrihana, ary ny vectors fampahavitrihana hafa rehetra, ny fampahavitrihana ary ny z-vectors, zs, dia tsy maintsy atao ao an-tsaina. Ny sosona iray antsoina hoe sosona fampidirana no alefa aloha.
Ampitahao amin'ny fitongilanana sy ny lanja tsirairay avy isika aorian'ny fametrahana azy ireo. Ny loop tsirairay dia misy ny kajy ny zvector ho toy ny vokatra teboka amin'ny lanja sy ny fampahavitrihana, manampy azy amin'ny lisitry ny zs, mamerina ny fampahavitrihana ary manampy ny fampahavitrihana nohavaozina amin'ny lisitry ny fampahavitrihana.
Farany, ny matematika. Ny delta, izay mitovy amin'ny lesoka avy amin'ny sosona teo aloha ampitomboina amin'ny prime sigmoid amin'ny singa farany amin'ny vectors zs, dia kajy alohan'ny hanombohantsika ny fandalovana miverina.
Ny sosona farany amin'ny nabla b dia napetraka ho delta, ary ny sosona farany amin'ny nabla w dia napetraka ho vokatra teboka amin'ny delta sy ny sosona fampahavitrihana faharoa ka hatramin'ny farany (navadika mba hahafahantsika manao ny matematika) .
Mitohy toy ny teo aloha isika, manomboka amin'ny sosona faharoa ary mamarana amin'ny farany, ary mamerina ny dingana rehefa vita ireo sosona farany ireo. Averina toy ny tuple ny nablas avy eo.
Fanavaozana ny fidinana gradient Mini-batch
Ny fomba SGD (stochastic gradient descent) teo aloha dia mampiditra fanavaozana kely. Koa satria ampiasaina amin'ny SGD izy io nefa mitaky backprop ihany koa, dia niady hevitra aho hoe aiza no hametrahana ity asa ity.
Farany dia nisafidy ny handefa azy eto aho. Manomboka amin'ny famoronana vectors 0 amin'ny nablas sy lanja, tahaka ny nataonay backprop.
Mitaky ny mini-batch sy ny tahan'ny fianarana eta ho fampidirany roa. Ao amin'ny mini-batch, dia mampiasa ny backprop function mba hahazoana ny delta isaky ny nabla array ho an'ny fidirana tsirairay, x, ary output, y. Ny lisitra nabla dia havaozina miaraka amin'ireo delta ireo.
Farany, mampiasa ny tahan'ny fianarana sy ny nabla izahay mba hanavaozana ny lanjan'ny tambajotra sy ny fitongilanana. Ny sanda tsirairay dia havaozina amin'ny sanda farany indrindra, latsaky ny tahan'ny fianarana, ampitomboina amin'ny haben'ny minibatch, ary avy eo ampiana amin'ny sanda nabla.
Tombanana ny asa
Ny asa fanombanana no asa farany ilaintsika soratana. Ny angona andrana no hany fidirana amin'ity asa ity. Amin'ity asa ity dia mampitaha ny vokatra azo avy amin'ny tambajotra miaraka amin'ny vokatra andrasana, y. Amin'ny alàlan'ny famahanana ny fidirana, x, mandroso, dia voafaritra ny vokatra azo avy amin'ny tambajotra.
Code feno
Rehefa manambatra ny kaody rehetra dia izao no miseho.
Fitsapana Neural Network
Loading data MNIST
The Takelaka data MNIST dia amin'ny endrika .pkl.gz, izay hosokafanay amin'ny fampiasana GZIP ary asiana pickle. Andao hanoratra fomba haingana hampidirana ity data ity ho toy ny tuple misy habe telo, mizara ho angona fanofanana, fanamarinana ary fitsapana.
Mba hanamora ny fitantanana ny angonay, dia hanoratra asa hafa izahay mba handrafetana ny y ho laharan-javatra 10. Ny laharan-kira dia ho 0 daholo afa-tsy ny 1 izay mifanandrify amin'ny tarehimarika mety amin'ny sary.
Hampiasa ny angona enta-mavesatra fototra sy ny fomba fandihizana mafana iray izahay mba hampidirana ny angonay amin'ny endrika mora vakiana. Hisy asa iray hafa hosoratana izay hamadika ny sanda x antsika ho lisitry ny haben'ny 784, mifanandrify amin'ny 784 pixel an'ilay sary, ary ny sanda y ho lasa endrika vetaveta mafana voakodia.
Avy eo dia hanambatra ny sanda x sy y isika mba hifanaraka amin'ny iray hafa. Izany dia mihatra amin'ny angon-drakitra fanofanana, fanamarinana ary fitsapana. Averinay avy eo ny angon-drakitra niova.
Fitsapana mihazakazaka
Hanamboatra rakitra vaovao antsoina hoe "mnist loader" isika izay hanafatra ny tamba-jotra neural naorina teo aloha (simple nn) sy ny MNIST data set loader alohan'ny hanombohantsika fitiliana.
Amin'ity rakitra ity, ny hany ilainay atao dia ny manafatra ny angon-drakitra, manangana tambajotra misy haben'ny sosona 784 ary 10 ny haben'ny soson'ny fivoahana, tanteraho ny fiasan'ny SGD an'ny tambajotra amin'ny angona fanofanana, ary andramo izany amin'ny alàlan'ny angona fitsapana.
Ataovy ao an-tsaina fa ho an'ny lisitr'ireo sosona fampidirana, dia tsy misy fahasamihafana ny isa misy eo anelanelan'ny 784 sy 10. Afaka manova ny sosona hafa amin'ny fomba rehetra tiantsika isika; ny habe miditra sy mivoaka fotsiny no raikitra.
Tsy ilaina ny sosona telo; mety hampiasa efatra, dimy, na roa fotsiny aza isika. Manaova fanandramana amin'izany.
Famaranana
Eto, amin'ny fampiasana Python 3, mamorona tambajotra neural hatrany am-boalohany. Miaraka amin'ny matematika avo lenta, niresaka momba ny fampiharana ihany koa izahay.
Nanomboka tamin'ny fampiharana ny asan'ny mpanampy izahay. Ho an'ny neurons miasa dia zava-dehibe ny fiasan'ny sigmoid sy sigmoid. Avy eo dia nampihatra ny fiasa feedforward izahay, izay dingana fototra amin'ny famahanana angon-drakitra ao amin'ny tambajotra neural.
Avy eo, namorona ny gradient descent function amin'ny Python izahay, ilay motera mitondra ny tambajotra neural. Mba hahitana ny "minima eo an-toerana" sy hanamafisana ny lanjany sy ny fitongilan'izy ireo, ny tambajotra neural dia mampiasa fidinana miandalana. Namorona ny asa backpropagation mampiasa gradient fidinana.
Amin'ny alàlan'ny fandefasana fanavaozana rehefa tsy mifanaraka amin'ny etikety sahaza ny vokatra, ity fiasa ity dia ahafahan'ny tamba-jotra neural “hianatra”.
Farany, nametraka ny Python vaovao izahay ny tambazotran'ny fahasalamana amin'ny fitsapana amin'ny fampiasana ny angon-drakitra MNIST. Nizotra tsara ny zava-drehetra.
Happy Coding!
Leave a Reply