Table of Contents[Kache][Montre]
Sèvo a konparab ak rezo neral yo. Sa a se analoji ki tipikman itilize pou ede yon moun ki nouvo nan sijè a konprann lide ki dèyè aprantisaj machin ak rezo neral atifisyèl.
Paske gen plizyè kouch kalkil matematik ak estatistik k ap pase dèyè sèn nan, defini rezo sa yo kòm yon fonksyon matematik se yon metòd ki pi avanse.
Sa a se pou moun ki aktyèlman enterese nan aprantisaj machin epi ki vle wè ki jan kòd rezo neral Python ekri.
Nan atik sa a, nou pral demontre ki jan yo konstwi yon rezo neral pwofon (DNN) konplètman konekte nan grafouyen. Piton 3.
Yon Apèsi sou Estrikti Fichye pou Kòd Rezo Neural Python nou an
Ap gen twa fichye kreye isit la. Premye a se senp nn.py dosye a, ki pral diskite nan "Enstalasyon Fonksyon Èd" ak "Konstwi rezo neral la nan grate."
Nou pral genyen tou yon fichye ki rele mnist loader.py pou chaje done tès yo, jan sa dekri nan "Chaje Done MNIST yo."
Finalman, nou pral gen yon dosye ki rele test.py ki pral lanse nan tèminal la pou teste rezo neral nou an.
Fichye sa a dekri an detay nan "Kouri Tès yo."
Enstalasyon
Bibliyotèk NumPy Python dwe telechaje pou w ka swiv leson patikilye sa a. Ou ka akonpli sa lè w itilize kòmandman sa a sou tèminal la:
Enpòte Modil ak mete kanpe fonksyon Èd la
Sèl de bibliyotèk nou mande yo se o aza ak NumPy, ke nou pral enpòte touswit. Pou pwa inisyal rezo neral nou an, nou pral melanje yo lè l sèvi avèk bibliyotèk la o aza.
Nan lòd akselere kalkil nou yo, nou pral itilize NumPy oswa np (pa konvansyon, li souvan enpòte kòm np). De fonksyon èd nou yo pral fèt apre enpòtasyon nou yo. De fonksyon sigmoid: youn ak premye sigmoid.
Regression lojistik pral klase done lè l sèvi avèk fonksyon sigmoid la, pandan y ap backpropagation pral kalkile delta oswa gradyan lè l sèvi avèk fonksyon premye sigmoid la.
Kreye klas rezo
Bati yon rezo neral konplètman lye se sèlman konsantre nan seksyon sa a. Klas rezo a pral anglobe tout fonksyon ki vini apre yo. Fonksyon Object() { [natif kòd] } pral kreye okòmansman nan klas rezo nou an.
Fonksyon Object() { [natif kòd] } egzije yon agiman, gwosè. Gwosè varyab la se yon koleksyon valè nimerik ki reprezante kantite nœuds opinyon ki prezan nan chak kouch rezo neral nou an.
Nou inisyalize kat pwopriyete nan metòd __init__ nou an. Varyab yo antre, gwosè, yo itilize yo mete lis la nan gwosè kouch ak kantite kouch, num kouch, respektivman.
Premye etap la se bay owaza prejije rezo nou an nan chak kouch ki swiv kouch opinyon an.
Finalman, chak lyen ant kouch yo antre ak pwodiksyon gen pwa li yo owaza pwodwi. Np.Random.Randn() bay yon echantiyon o aza trase nan distribisyon nòmal la pou kontèks.
Feed Forward Fonksyon
Nan yon rezo neral, enfòmasyon yo voye pi devan pa fonksyon an feedforward. Yon agiman, a, ki endike vektè deklanchman aktyèl la, pral mande pa fonksyon sa a.
Fonksyon sa a estime deklanchman yo nan chak kouch pa iterasyon sou tout prejije ak pwa nan rezo a. Repons yo bay la se prediksyon an, ki se aktivasyon dènye kouch la.
Mini-pakèt desandan gradyan
Echèl klas rezo nou an se Desandan Gradyan. Nan vèsyon sa a, nou itilize mini-pakèt (stochastic) desandan gradyan, yon varyasyon modifye desandan gradyan.
Sa a endike ke yon ti pakèt pwen done yo pral itilize pou mete ajou modèl nou an. Kat agiman obligatwa ak yon agiman opsyonèl yo pase nan metòd sa a. Kat varyab obligatwa yo se seri done fòmasyon an, kantite epòk, gwosè mini-lo yo, ak pousantaj aprantisaj la (eta).
Done tès yo disponib sou demann. Nou pral bay done tès yo lè nou evantyèlman evalye rezo sa a. Kantite echantiyon nan fonksyon sa a okòmansman mete sou longè lis la yon fwa done fòmasyon yo te transfòme nan yon kalite lis.
Nou aplike menm pwosesis la tou pou tès done yo bay nan. Sa a se paske olye ke yo te retounen nan nou kòm lis, yo se vrèman zip nan lis. Lè nou chaje echantiyon done MNIST yo pita, nou pral aprann plis sou sa.
Si nou ka asire nou ke nou bay tou de kalite done kòm lis, Lè sa a, kalite-casting sa a pa nesesèman esansyèl.
Yon fwa nou gen done yo, nou ale sou epòk fòmasyon yo nan yon bouk. Yon peryòd fòmasyon se sèlman yon wonn nan fòmasyon rezo neral. Nou premye chefeul done yo nan chak epòk asire owaza anvan fè yon lis mini-lo.
Fonksyon mini pakèt aktyalizasyon, ki diskite anba a, yo pral rele pou chak mini-pakèt. Yo pral retounen presizyon tès la tou si done tès yo disponib.
Fonksyon èd pri-dérivés
An nou devlope yon fonksyon k ap ede yo rele pri dérivés anvan nou reyèlman kreye kòd la backpropagation. Si nou fè yon erè nan kouch pwodiksyon nou an, fonksyon derive pri a pral montre li.
Li mande de entrées: etalaj deklanchman pwodiksyon an ak kowòdone y yo nan valè pwodiksyon antisipe yo.
Fonksyon backpropagation
Vektè deklanchman aktyèl nou an, aktivasyon, osi byen ke nenpòt lòt vektè aktivasyon, aktivasyon, ak vektè z, zs, tout dwe kenbe nan tèt ou. Yon kouch ki rele kouch D 'aktive an premye.
Nou pral boukle nan chak patipri ak pwa apre mete yo. Chak bouk enplike kalkile vektè z la kòm pwodwi pwen nan pwa yo ak aktivasyon an, ajoute li nan lis la nan zs, rekalkile aktivasyon an, epi ajoute aktivasyon an mete ajou nan lis aktivasyon an.
Finalman, matematik la. Delta a, ki egal a erè ki soti nan kouch anvan an miltipliye pa premye sigmoid dènye eleman vektè zs yo, yo kalkile anvan nou kòmanse pase bak nou an.
Dènye kouch nabla b la se delta a, epi kouch final la nan nabla w mete yo dwe pwodwi pwen nan delta a ak kouch nan dezyèm ak dènye nan aktivasyon (transpoze pou nou ka aktyèlman fè matematik la) .
Nou kontinye tankou anvan, kòmanse ak dezyèm kouch nan epi fini ak dènye a, epi repete pwosesis la apre w fin ranpli dènye kouch sa yo. Lè sa a, nablas yo bay tounen kòm yon tuple.
Mete ajou Mini-pakèt desandan gradyan
Metòd SGD nou an (desandan gradyan stochastic) soti nan anvan enkòpore aktyalizasyon mini-pakèt. Depi li itilize nan SGD men li mande tou backprop, mwen te diskite ki kote yo mete fonksyon sa a.
Finalman, mwen te fè chwa pou poste li isit la. Li kòmanse pa jenere 0 vektè nan nablas prejije yo ak pwa, jis tankou fonksyon backprop nou an te fè.
Li mande pou mini-pakèt la ak pousantaj aprantisaj eta kòm de entrées li yo. Nan mini-pakèt la, nou sèvi ak fonksyon backprop pou jwenn delta chak etalaj nabla pou chak opinyon, x, ak pwodiksyon, y. Lè sa a, lis nabla yo mete ajou ak delta sa yo.
Finalman, nou itilize pousantaj aprantisaj la ak nablas yo pou mete ajou pwa ak prejije rezo a. Chak valè mete ajou ak valè ki pi resan an, mwens pousantaj aprantisaj la, miltipliye pa gwosè minibatch la, epi ajoute valè nabla a.
Evalye fonksyon
Fonksyon evalye a se final la nou bezwen ekri. Done tès yo se sèlman opinyon pou fonksyon sa a. Nan fonksyon sa a, nou sèlman konpare rezilta yo nan rezo a ak rezilta a antisipe, y. Pa alimentation D', x, Avant, sorties rezo a yo detèmine.
Ranpli Kòd
Lè nou konbine tout kòd la, sa a se ki jan li parèt.
Tès rezo neral
Chaje done MNIST yo
Jounal Done MNIST se nan fòma .pkl.gz, ke nou pral louvri lè l sèvi avèk GZIP epi chaje ak pickle. Ann ekri yon metòd rapid pou chaje done sa yo kòm yon tiple gwosè twa, divize an fòmasyon, validation, ak done tès yo.
Pou fè done nou yo pi fasil pou jere, nou pral ekri yon lòt fonksyon pou kode y a nan yon etalaj 10 atik. Etalaj la pral tout 0 eksepte yon 1 ki matche ak chif apwopriye imaj la.
Nou pral sèvi ak done chaj debaz yo ak yon metòd kode cho pou chaje done nou yo nan yon fòma lizib. Y ap ekri yon lòt fonksyon ki pral konvèti valè x nou yo nan yon lis gwosè 784, ki matche ak 784 piksèl imaj la, ak valè y nou yo nan yon sèl fòm vektè kode cho yo.
Lè sa a, nou pral konbine valè yo x ak y konsa ke yon endèks matche ak lòt la. Sa a aplike a fòmasyon, validation, ak seri done tès yo. Lè sa a, nou retounen done yo chanje.
Kouri Tès
Nou pral fè yon nouvo fichye ki rele “mnist loader” ki pral enpòte tou de rezo neral nou te etabli anvan an (senp nn) ak MNIST data set loader anvan nou kòmanse tès la.
Nan dosye sa a, tout sa nou bezwen fè se enpòte done yo, bati yon rezo ak yon gwosè kouch opinyon 784 ak yon gwosè kouch pwodiksyon nan 10, kouri fonksyon SGD rezo a sou done fòmasyon an, Lè sa a, teste li lè l sèvi avèk done tès yo.
Kenbe nan tèt ou ke pou lis kouch opinyon nou an, li pa fè okenn diferans kisa nenpòt nan nimewo yo ye ant 784 ak 10. Nou ka chanje lòt kouch yo nenpòt fason nou renmen; jis antre ak pwodiksyon gwosè yo fiks.
Twa kouch pa nesesè; nou ta ka itilize kat, senk, oswa menm jis de. Pran plezi fè eksperyans avèk li.
konklizyon
Isit la, lè l sèvi avèk Python 3, nou kreye yon rezo neral soti nan grafouyen. Ansanm ak matematik wo nivo, nou te diskite tou spesifik aplikasyon an.
Nou te kòmanse aplike fonksyon asistan. Pou newòn yo travay, fonksyon premye sigmoid ak sigmoid yo enpòtan anpil. Lè sa a, nou mete an pratik fonksyon an feedforward, ki se pwosesis la fondamantal pou manje done nan rezo neral la.
Apre sa, nou te kreye fonksyon desandan gradyan nan Python, motè a ki kondwi rezo neral nou an. Yo nan lòd yo lokalize "minimòm lokal" ak optimize pwa yo ak prejije, rezo neral nou an sèvi ak desandan gradyan. Nou te kreye fonksyon backpropagation lè l sèvi avèk desandan gradyan.
Lè yo bay mizajou lè rezilta yo pa matche ak etikèt ki apwopriye yo, fonksyon sa a pèmèt rezo neral la "aprann."
Finalman, nou mete nouvo Python nou an nè rezo nan tès la lè l sèvi avèk seri done MNIST la. Tout bagay te fonksyone san pwoblèm.
Ala bon sa bon kodaj!
Kite yon Reply