Atọka akoonu[Fipamọ][Ifihan]
Ọpọlọ jẹ afiwera si awọn nẹtiwọọki nkankikan. Eyi ni afiwe ti o jẹ deede lati ṣe iranlọwọ fun ẹnikan tuntun si koko-ọrọ lati loye awọn imọran lẹhin ikẹkọ ẹrọ ati awọn nẹtiwọọki nkankikan atọwọda.
Nitoripe ọpọlọpọ awọn ipele ti mathematiki ati awọn iṣiro iṣiro ti n lọ lẹhin awọn iṣẹlẹ, asọye awọn nẹtiwọki wọnyi bi iṣẹ mathematiki jẹ ọna ilọsiwaju diẹ sii.
Eyi jẹ fun awọn eniyan ti o nifẹ si ikẹkọ ẹrọ ati fẹ lati rii bii koodu nẹtiwọọki neural Python ti kọ.
Ninu nkan yii, a yoo ṣe afihan bii o ṣe le kọ nẹtiwọọki ti o jinlẹ ti o jinlẹ (DNN) ti o ni asopọ ni kikun lati ibere ni Python 3.
Akopọ ti Eto Faili fun koodu Nẹtiwọọki Neural Python wa
Awọn faili mẹta yoo ṣẹda nibi. Ohun akọkọ ni faili nn.py ti o rọrun, eyiti yoo jiroro ni “Ṣiṣeto Awọn iṣẹ Oluranlọwọ” ati “Ṣiṣe Nẹtiwọọki Neural lati Scratch.”
A yoo tun ni faili kan ti a npè ni mnist loader.py lati ṣajọ data idanwo naa, gẹgẹbi a ti ṣe apejuwe rẹ ni "Nru data MNIST."
Nikẹhin, a yoo ni faili kan ti a npè ni test.py ti yoo ṣe ifilọlẹ ni ebute lati ṣe idanwo netiwọki nkankikan wa.
Faili yii jẹ apejuwe ni kikun ni “Awọn Idanwo Ṣiṣe.”
fifi sori
Ile-ikawe NumPy Python gbọdọ jẹ igbasilẹ lati le tẹle ikẹkọ yii. O le ṣaṣeyọri eyi nipa lilo aṣẹ atẹle lori ebute naa:
Gbigbe Awọn modulu wọle ati ṣeto iṣẹ Oluranlọwọ
Awọn ile-ikawe meji nikan ti a nilo jẹ ID ati NumPy, eyiti a yoo gbe wọle lẹsẹkẹsẹ. Fun awọn iwuwo ibẹrẹ nẹtiwọọki nkankikan wa, a yoo dapọ wọn ni lilo ile-ikawe laileto.
Lati le yara awọn iṣiro wa, a yoo lo NumPy tabi np (nipasẹ apejọpọ, igbagbogbo a gbe wọle bi np). Awọn iṣẹ oluranlọwọ meji wa yoo ṣee ṣe lẹhin agbewọle wa. Awọn iṣẹ sigmoid meji: ọkan ati sigmoid nomba.
Ipadasẹhin logistic yoo ṣe lẹtọ data nipa lilo iṣẹ sigmoid, lakoko ti isọdọtun yoo ṣe iṣiro delta tabi gradient nipa lilo iṣẹ akọkọ sigmoid.
Ṣiṣẹda Network Class
Ṣiṣeto nẹtiwọọki nkankikan ti o ni asopọ ni kikun jẹ idojukọ nikan ti apakan yii. Kilasi nẹtiwọki yoo yika gbogbo awọn iṣẹ ti o wa lẹhin. Iṣẹ Nkan() {[koodu abinibi]} ni yoo ṣẹda ni ibẹrẹ ni kilasi nẹtiwọki wa.
Ariyanjiyan kan, awọn iwọn, nilo nipasẹ iṣẹ Nkan () {[koodu abinibi]}. Awọn oniyipada awọn iwọn jẹ akojọpọ awọn iye nomba ti o duro fun nọmba awọn apa igbewọle ti o wa ni ipele kọọkan ti nẹtiwọọki nkankikan wa.
A ṣe ipilẹṣẹ awọn ohun-ini mẹrin ni ọna __init__ wa. Awọn oniyipada titẹ sii, awọn iwọn, ni a lo lati ṣeto atokọ ti awọn iwọn Layer ati nọmba awọn fẹlẹfẹlẹ, awọn ipele nọmba, lẹsẹsẹ.
Igbesẹ akọkọ ni lati fi awọn aibikita akọkọ ti nẹtiwọọki wa laileto si Layer kọọkan ti o tẹle ipele titẹ sii.
Nikẹhin, ọna asopọ kọọkan laarin awọn titẹ sii ati awọn ipele iṣelọpọ ni awọn iwuwo rẹ ti ipilẹṣẹ laileto. Np.Random.Randn () yoo fun a ID ayẹwo kale lati awọn deede pinpin fun o tọ.
Ifunni Siwaju Išė
Ninu netiwọki nkankikan, alaye ti wa ni fifiranṣẹ siwaju nipasẹ iṣẹ ifunni. Ariyanjiyan kan, a, nfihan fekito imuṣiṣẹ lọwọlọwọ, yoo nilo nipasẹ iṣẹ yii.
Iṣẹ yii ṣe iṣiro awọn imuṣiṣẹ ni ipele kọọkan nipa aṣetunṣe lori gbogbo awọn aiṣedeede ati awọn iwuwo ni nẹtiwọọki. Idahun ti a fun ni asọtẹlẹ, eyiti o jẹ awọn iṣẹ ṣiṣe ti Layer ti o kẹhin.
Mini-ipele Gradient Isalẹ
Ẹṣin iṣẹ kilaasi Nẹtiwọọki wa jẹ Ilọlẹ Didi. Ninu ẹya yii, a lo mini-batch (sitochastic) irandiwọn gradient, iyatọ ti a tunṣe ti isunmọ gradient.
Eyi tọkasi pe ipele kekere ti awọn aaye data yoo ṣee lo lati ṣe imudojuiwọn awoṣe wa. Mẹrin ti a beere ati ariyanjiyan iyan kan ti kọja si ọna yii. Awọn oniyipada mẹrin ti a beere ni eto data ikẹkọ, nọmba awọn akoko, iwọn awọn ipele kekere, ati oṣuwọn ikẹkọ (eta).
Awọn data idanwo wa lori ibeere. A yoo pese data idanwo nigba ti a ba ṣe iṣiro nẹtiwọọki yii nikẹhin. Nọmba awọn ayẹwo ni iṣẹ yii ni a ṣeto ni ibẹrẹ si ipari ti atokọ ni kete ti data ikẹkọ ti yipada si iru atokọ kan.
A tun lo ilana kanna lati ṣe idanwo data ti o fun ni. Eleyi jẹ nitori dipo ti a pada si wa bi awọn akojọ, ti won wa ni gan zips ti awọn akojọ. Nigba ti a ba kojọpọ awọn ayẹwo data MNIST nigbamii, a yoo ni imọ siwaju sii nipa eyi.
Ti a ba le rii daju pe a pese awọn iru data mejeeji gẹgẹbi awọn atokọ, lẹhinna iru-simẹnti ko ṣe pataki dandan.
Ni kete ti a ba ni data naa, a kọja lori awọn akoko ikẹkọ ni lupu kan. Akoko ikẹkọ jẹ iyipo kan ti ikẹkọ nẹtiwọọki nkankikan. A kọkọ daapọ data ni akoko kọọkan lati rii daju aileto ṣaaju ṣiṣe atokọ ti awọn ipele kekere.
Iṣẹ ipele kekere imudojuiwọn, eyiti a jiroro ni isalẹ, ni yoo pe fun ipele-kekere kọọkan. Ipeye idanwo naa yoo tun pada ti data idanwo ba wa.
Iṣẹ oluranlọwọ itọsẹ iye owo
Jẹ ki a ṣe agbekalẹ iṣẹ oluranlọwọ ti a pe ni itọsẹ iye owo ni akọkọ ṣaaju ki a to ṣẹda koodu isọdọtun gaan. Ti a ba ṣe aṣiṣe ninu ipele iṣelọpọ wa, iṣẹ itọsẹ iye owo yoo fihan.
O nilo awọn igbewọle meji: akojọpọ awọn imuṣiṣẹ iṣelọpọ ati awọn ipoidojuko y ti awọn iye iṣelọpọ ti ifojusọna.
Backpropagation iṣẹ
Fekito imuṣiṣẹ lọwọlọwọ wa, imuṣiṣẹ, bakanna bi eyikeyi awọn adaṣe imuṣiṣẹ miiran, awọn iṣẹ ṣiṣe, ati awọn z-vectors, zs, gbọdọ jẹ gbogbo wọn ni ọkan. Layer ti a npe ni Layer input ti wa ni mu ṣiṣẹ ni akọkọ.
A yoo lupu nipasẹ irẹjẹ kọọkan ati iwuwo lẹhin fifi wọn si oke. Lupu kọọkan pẹlu ṣiṣe iṣiro z fekito bi ọja aami ti awọn iwuwo ati imuṣiṣẹ, fifi kun si atokọ zs, ṣiṣatunṣe imuṣiṣẹ, ati fifi imuṣiṣẹ imudojuiwọn kun si atokọ awọn iṣẹ ṣiṣe.
Níkẹyìn, awọn eko isiro. Delta naa, eyiti o dọgba si aṣiṣe lati ipele iṣaaju ti o pọ si nipasẹ sigmoid nomba ti ipin to kẹhin ti awọn vectors zs, jẹ iṣiro ṣaaju ki a to bẹrẹ iwe-iwọle sẹhin wa.
Layer ti o kẹhin ti nabla b ti ṣeto lati jẹ delta, ati pe Layer ti o kẹhin ti nabla w ti ṣeto lati jẹ ọja aami ti delta ati ipele keji-si-kẹhin ti awọn iṣẹ ṣiṣe (ti o yipada ki a le ṣe iṣiro naa nitootọ) .
A tẹsiwaju bi iṣaaju, bẹrẹ pẹlu ipele keji ati ipari pẹlu ti o kẹhin, ati tun ilana naa ṣe lẹhin ipari awọn ipele ti o kẹhin. Awọn nablas lẹhinna ni a fun pada gẹgẹbi tuple.
Nmu iwọn Mini-ipele gradient dojuiwọn
Ọna SGD wa (sitochastic gradient) lati iṣaaju ṣafikun imudojuiwọn-ipele kekere. Niwọn igba ti o ti lo ni SGD ṣugbọn o tun nilo backprop, Mo jiyan ibi ti yoo fi iṣẹ yii si.
Nikẹhin, Mo ṣe yiyan lati firanṣẹ si ibi. O bẹrẹ nipa ti ipilẹṣẹ 0 awọn ipadasẹhin ti awọn aiṣedeede' ati awọn nablas awọn iwuwo, gẹgẹ bi iṣẹ ẹhin wa ti ṣe.
O nilo ipele-kekere ati oṣuwọn ikẹkọ eta bi awọn igbewọle meji rẹ. Ni ipele-kekere, lẹhinna a lo iṣẹ backprop lati gba delta ti ọkọọkan nabla orun fun titẹ sii kọọkan, x, ati abajade, y. Awọn akojọ nabla ti wa ni imudojuiwọn pẹlu awọn deltas wọnyi.
Nikẹhin, a lo oṣuwọn ikẹkọ ati nablas lati ṣe imudojuiwọn awọn iwuwo netiwọki ati awọn aiṣedeede. Iye kọọkan ti ni imudojuiwọn si iye aipẹ julọ, o dinku oṣuwọn ẹkọ, di pupọ nipasẹ iwọn kekere, ati lẹhinna ṣafikun si iye nabla.
Iṣiro iṣẹ
Iṣẹ iṣiro jẹ eyi ti o kẹhin ti a nilo lati kọ. Awọn data idanwo jẹ igbewọle nikan fun iṣẹ yii. Ninu iṣẹ yii, a ṣe afiwe awọn abajade ti nẹtiwọọki nikan pẹlu abajade ifojusọna, y. Nipa fifun titẹ sii, x, siwaju, awọn abajade ti nẹtiwọọki ti pinnu.
Pipe koodu
Nigba ti a ba darapọ gbogbo koodu, eyi ni bi o ṣe han.
Idanwo Nẹtiwọọki Neural
Nkojọpọ data MNIST
awọn data MNIST wa ni ọna kika .pkl.gz, eyiti a yoo ṣii nipa lilo GZIP ati fifuye pẹlu pickle. Jẹ ki a kọ ọna iyara lati ṣaja data yii bi iwọn iwọn mẹta, pin si ikẹkọ, afọwọsi, ati data idanwo.
Lati jẹ ki data wa rọrun lati ṣakoso, a yoo kọ iṣẹ miiran lati fi koodu y y sinu titobi 10 kan. Eto naa yoo jẹ gbogbo 0s ayafi fun 1 kan ti o baamu nọmba to dara ti aworan naa.
A yoo lo data fifuye ipilẹ ati ọna fifi koodu gbigbona kan lati gbe data wa sinu ọna kika kika. Iṣẹ miiran yoo kọ ti yoo yi awọn iye x wa pada si atokọ ti iwọn 784, ti o baamu si awọn piksẹli 784 aworan naa, ati awọn iye y wa sinu fọọmu fekito ti o gbona ẹyọkan.
Lẹhinna a yoo darapọ awọn iye x ati y gẹgẹbi itọka kan baamu ekeji. Eyi kan si ikẹkọ, afọwọsi, ati awọn eto data idanwo. Lẹhinna a da data ti o yipada pada.
Awọn idanwo Ṣiṣe
A yoo ṣe faili tuntun kan ti a pe ni “loader mnist” ti yoo gbe wọle mejeeji nẹtiwọọki nkankikan ti a ti ṣeto tẹlẹ (nn ti o rọrun) ati agberu ṣeto data MNIST ṣaaju ki a to bẹrẹ idanwo.
Ninu faili yii, gbogbo ohun ti a nilo lati ṣe ni gbe wọle data naa, kọ nẹtiwọọki kan pẹlu iwọn Layer igbewọle ti 784 ati iwọn ipele ti o wu ti 10, ṣiṣẹ iṣẹ SGD ti nẹtiwọọki lori data ikẹkọ, lẹhinna ṣe idanwo rẹ nipa lilo data idanwo naa.
Ranti pe fun atokọ ti awọn ipele titẹ sii wa, ko ṣe iyatọ kini eyikeyi ninu awọn nọmba wa laarin 784 ati 10. A le yi awọn ipele miiran pada ni ọna ti a fẹ; o kan awọn titẹ sii ati awọn iwọn wu ti wa ni ti o wa titi.
Awọn ipele mẹta ko wulo; a le lo mẹrin, marun, tabi paapaa meji nikan. Ṣe igbadun lati ṣe idanwo pẹlu rẹ.
ipari
Nibi, ni lilo Python 3, a ṣẹda nẹtiwọọki nkankikan lati ibere. Pẹlú pẹlu iṣiro ipele giga, a tun jiroro ni pato ti imuse.
A bẹrẹ nipasẹ imuse awọn iṣẹ oluranlọwọ. Fun awọn neuronu lati ṣiṣẹ, sigmoid ati awọn iṣẹ akọkọ sigmoid jẹ pataki. Lẹhinna a fi iṣẹ ṣiṣe ifunni si iṣe, eyiti o jẹ ilana ipilẹ fun kikọ data sinu nẹtiwọọki nkankikan.
Nigbamii ti, a ṣẹda iṣẹ isọdi gradient ni Python, ẹrọ ti n ṣe nẹtiwọọki nkankikan wa. Lati le wa “minima agbegbe” ati imudara awọn iwuwo wọn ati awọn aiṣedeede, nẹtiwọọki nkankikan wa nlo isọdi gradient. A ṣẹda awọn backpropagation iṣẹ lilo isosileomi ite.
Nipa jiṣẹ awọn imudojuiwọn nigbati awọn abajade ko baamu awọn akole to tọ, iṣẹ yii jẹ ki nẹtiwọọki nkankikan le “kọ ẹkọ.”
Nikẹhin, a fi Python-titun wa Nẹtiwọki ti nhu si idanwo naa nipa lilo eto data MNIST. Ohun gbogbo ṣiṣẹ laisiyonu.
Dun ifaminsi!
Fi a Reply