Table of Contents[Hūnā][Hōʻike]
Hoʻohālikelike ʻia ka lolo me nā neural network. ʻO kēia ka hoʻohālikelike i hoʻohana mau ʻia e kōkua i kahi mea hou i ke kumuhana e hoʻomaopopo i nā manaʻo ma hope o ke aʻo ʻana i ka mīkini a me nā ʻupena neural artificial.
No ka mea he nui nā ʻāpana o ka helu makemakika a me ka helu helu e hele nei ma hope o nā hiʻohiʻona, ʻo ka wehewehe ʻana i kēia mau pūnaewele ma ke ʻano he hana makemakika he ala ʻoi aku ka holomua.
No ka poʻe makemake maoli i ka aʻo ʻana i ka mīkini a makemake e ʻike pehea i kākau ʻia ai ke code neural network Python.
Ma kēia ʻatikala, e hōʻike mākou i ke kūkulu ʻana i kahi pūnaewele neural hohonu (DNN) pili piha mai ka ʻohi ʻana Python 3.
ʻO kahi ʻike nui o ka hoʻonohonoho faila no kā mākou Python Neural Network Code
E hana ʻia ʻekolu faila ma aneʻi. ʻO ka mea mua ka faila nn.py maʻalahi, e kūkākūkā ʻia ma ka "Setting Up Helper Functions" a me "Building the Neural Network from Scratch."
E loaʻa iā mākou kahi faila i kapa ʻia ʻo mnist loader.py e hoʻouka i ka ʻikepili hoʻāʻo, e like me ka wehewehe ʻana ma ka "Loading MNIST Data."
ʻO ka hope, e loaʻa iā mākou kahi faila i kapa ʻia ʻo test.py e hoʻokuʻu ʻia i ka pahu e hoʻāʻo ai i kā mākou pūnaewele neural.
Ua wehewehe kikoʻī ʻia kēia faila ma "Nā Ho'āʻo Holo."
mea hoʻonoho
Pono e hoʻoiho ʻia ka waihona NumPy Python i mea e hahai ai i kēia kumu aʻo. Hiki iā ʻoe ke hoʻokō i kēia ma ka hoʻohana ʻana i kēia kauoha ma ka terminal:
Ka lawe ʻana i nā Module a hoʻonohonoho i ka hana Helper
ʻO nā hale waihona puke ʻelua wale nō a mākou e makemake ai he random a me NumPy, a mākou e lawe koke mai ai. No nā paona mua o kā mākou pūnaewele neural, e kāpīpī mākou iā lākou me ka hoʻohana ʻana i ka waihona puke.
I mea e wikiwiki ai kā mākou helu helu, e hoʻohana mākou i ka NumPy a i ʻole np (ma ka convention, lawe pinepine ʻia ʻo ia he np). E hana ʻia kā mākou mau hana kōkua ʻelua ma hope o kā mākou lawe ʻana mai. ʻElua mau hana sigmoid: hoʻokahi a me ka sigmoid prime.
E hoʻokaʻawale ka loiloi logistic i ka ʻikepili me ka hoʻohana ʻana i ka hana sigmoid, aʻo ka backpropagation e helu i ka delta a i ʻole gradient me ka hoʻohana ʻana i ka hana sigmoid prime.
Ke hana ʻana i ka papa Pūnaewele
ʻO ke kūkulu ʻana i kahi pūnaewele neural pili piha ʻo ia wale nō ka manaʻo o kēia ʻāpana. E hoʻopili ka papa pūnaewele i nā hana āpau e hiki mai ana ma hope. E hana mua ʻia ka hana Object () { [nātive code] } i kā mākou papa pūnaewele.
Hoʻokahi hoʻopaʻapaʻa, nui, koi ʻia e ka hana Object () { [nātive code] }. ʻO ka ʻokoʻa nui he hōʻiliʻili o nā waiwai helu e hōʻike ana i ka helu o nā nodes komo i kēlā me kēia papa o kā mākou pūnaewele neural.
Hoʻomaka mākou i ʻehā mau waiwai i kā mākou ʻano __init__. Hoʻohana ʻia nā mea hoʻololi hoʻokomo, nā nui, e hoʻonohonoho i ka papa inoa o ka nui o ka papa a me ka helu o nā papa, nā papa helu, kēlā me kēia.
ʻO ka hana mua, ʻo ia ka hoʻokaʻawale ʻana i nā kuhi mua o kā mākou pūnaewele i kēlā me kēia papa e hahai ana i ka papa hoʻokomo.
ʻO ka mea hope loa, ʻo kēlā me kēia loulou ma waena o nā papa hoʻokomo a me nā papa hoʻopuka i hoʻokumu ʻia kona mau kaupaona. Hāʻawi ʻo Np.Random.Randn() i kahi laʻana i huki ʻia mai ka puʻunaue maʻamau no ka pōʻaiapili.
Hanai i mua hana
Ma kahi pūnaewele neural, hoʻouna ʻia ka ʻike e ka hana feedforward. Hoʻokahi kumu hoʻopaʻapaʻa, a, e hōʻike ana i ka vector hoʻāla i kēia manawa, e koi ʻia e kēia hana.
Hoʻohālikelike kēia hana i nā hoʻoulu ʻana ma kēlā me kēia papa ma o ka hoʻololi ʻana i nā mea āpau a me nā paona o ka pūnaewele. ʻO ka pane i hāʻawi ʻia ʻo ia ka wānana, ʻo ia ka hoʻoulu ʻana o ka papa hope.
ʻO ka Descent Gradient Mini-Batch
ʻO Gradient Descent ka mea hana o kā mākou papa Pūnaewele. Ma kēia mana, hoʻohana mākou i ka iho gradient liʻiliʻi (stochastic), kahi hoʻololi hoʻololi o ka iho gradient.
Hōʻike kēia e hoʻohana ʻia kahi puʻupuʻu liʻiliʻi o nā ʻikepili e hoʻohou i kā mākou kumu hoʻohālike. ʻEhā koi a hoʻokahi manaʻo koho i hāʻawi ʻia i kēia ala. ʻO nā ʻano hoʻololi i koi ʻia ʻo ia ka hoʻonohonoho ʻikepili hoʻomaʻamaʻa, ka helu o nā manawa, ka nui o nā pahu liʻiliʻi, a me ka helu aʻo (eta).
Loaʻa ka ʻikepili hoʻāʻo ma ke noi. Hāʻawi mākou i ka ʻikepili hoʻāʻo ke loiloi mākou i kēia pūnaewele. Hoʻonohonoho mua ʻia ka helu o nā laʻana ma kēia hana i ka lōʻihi o ka papa inoa ke hoʻololi ʻia ka ʻikepili aʻo i kahi ʻano papa inoa.
Hoʻohana mākou i ke kaʻina hana like no ka hoʻāʻo ʻana i ka ʻikepili i hāʻawi ʻia. ʻO kēia no ka mea ma kahi o ka hoʻihoʻi ʻia ʻana mai iā mākou ma ke ʻano he papa inoa, he mau zips maoli lākou o nā papa inoa. Ke hoʻouka mākou i nā laʻana ʻikepili MNIST ma hope, e aʻo hou mākou e pili ana i kēia.
Inā hiki iā mākou ke hōʻoia e hāʻawi mākou i nā ʻano ʻikepili ʻelua ma ke ʻano he papa inoa, a laila ʻaʻole pono kēia ʻano hoʻolei ʻana.
Ke loaʻa iā mākou ka ʻikepili, hele mākou i nā wā hoʻomaʻamaʻa i kahi loop. ʻO kahi manawa hoʻomaʻamaʻa he hoʻokahi wale nō puni o ka hoʻomaʻamaʻa ʻana i ka neural network. Hoʻopili mua mākou i ka ʻikepili i kēlā me kēia manawa e hōʻoia i ka randomness ma mua o ka hana ʻana i kahi papa inoa o nā pahu liʻiliʻi.
E kāhea ʻia ka hana mini batch update, i kūkākūkā ʻia ma lalo nei no kēlā me kēia mini-batch. E hoʻihoʻi ʻia ka pololei hōʻike inā loaʻa ka ʻikepili hōʻike.
Hana kōkua kumu kūʻai
E hoʻomohala i kahi hana kōkua i kapa ʻia ʻo cost derivative ma mua o ka hana ʻana i ke code backpropagation. Inā kuhi hewa mākou i kā mākou papa hoʻopuka, e hōʻike ʻia ka hana derivative cost.
Pono ia i ʻelua mau mea hoʻokomo: ʻo ka hoʻoulu ʻana o nā mea hoʻoiho a me nā y-coordinates o nā waiwai hoʻopuka i manaʻo ʻia.
Hana hoʻolaha hope
ʻO kā mākou vector hoʻonā i kēia manawa, hoʻoulu, a me nā mea hoʻolaʻa ʻē aʻe, nā hoʻoulu ʻana, a me nā z-vectors, zs, pono e hoʻomanaʻo ʻia. Ho'ā mua ʻia kahi papa i kapa ʻia ka papa hoʻokomo.
E hoʻopili mākou i kēlā me kēia manaʻo a me ke kaumaha ma hope o ke kau ʻana iā lākou. Hoʻopili ʻia kēlā me kēia loop i ka helu ʻana i ka vector z ma ke ʻano he hua kiko o nā kaupaona a me ka hoʻāla ʻana, e hoʻohui i ka papa inoa o nā zs, e helu hou ana i ka hoʻāla ʻana, a me ka hoʻohui ʻana i ka hoʻāla hou ʻana i ka papa inoa o nā hana.
ʻO ka hope, ka makemakika. ʻO ka delta, i like me ka hewa mai ka papa mua i hoʻonui ʻia e ka sigmoid prime o ka mea hope o nā zs vectors, ua helu ʻia ma mua o ka hoʻomaka ʻana i kā mākou hele hope.
ʻO ka papa hope o ka nabla b ua hoʻonohonoho ʻia ʻo ia ka delta, a ʻo ka papa hope o ka nabla w ua hoʻonohonoho ʻia ʻo ia ka huahana kiko o ka delta a me ka papa lua-i-hope o nā hoʻāla (hoʻololi ʻia i hiki iā mākou ke hana maoli i ka makemakika) .
Hoʻomau mākou e like me ka wā ma mua, e hoʻomaka me ka papa ʻelua a hoʻopau me ka hope, a hana hou i ke kaʻina hana ma hope o ka pau ʻana o kēia mau papa hope. Hāʻawi ʻia nā nablas ma ke ʻano he tuple.
Ke hōʻano hou nei i ka iho gradient mini-batch
ʻO kā mākou ʻano SGD (stochastic gradient descent) ma mua o ka hoʻokomo ʻana i ka hōʻano hou-batch. No ka mea ua hoʻohana ʻia ia ma SGD akā pono pū kekahi backprop, ua hoʻopaʻapaʻa wau i kahi e kau ai i kēia hana.
ʻO ka hope, ua koho au e kau ma ʻaneʻi. Hoʻomaka ia ma ka hana ʻana i nā vectors 0 o nā nablas biases a me nā kaupaona, e like me kā mākou hana backprop.
Pono ia i ka mini-batch a me ka helu aʻo eta e like me kāna mau hoʻokomo ʻelua. I loko o ka pūʻulu liʻiliʻi, a laila hoʻohana mākou i ka hana backprop e kiʻi i ka delta o kēlā me kēia hui nabla no kēlā me kēia hoʻokomo, x, a me ka puka, y. Hoʻopili hou ʻia nā papa inoa nabla me kēia mau delta.
ʻO ka hope, hoʻohana mākou i ka helu hoʻonaʻauao a me ka nablas e hoʻonui i nā paona a me nā hoʻohālikelike o ka pūnaewele. Hoʻonui ʻia kēlā me kēia waiwai i ka waiwai hou loa, emi mai ka helu aʻo, hoʻonui ʻia me ka nui minibatch, a laila hoʻohui ʻia i ka waiwai nabla.
E loiloi i ka hana
ʻO ka hana loiloi ka mea hope loa e pono ai mākou e kākau. ʻO ka ʻikepili hoʻāʻo ka mea hoʻokomo wale no kēia hana. Ma kēia hana, hoʻohālikelike wale mākou i nā huahana o ka pūnaewele me ka hopena i manaʻo ʻia, y. Ma ka hānai ʻana i ka mea hoʻokomo, x, i mua, ua hoʻoholo ʻia nā hopena o ka pūnaewele.
Code piha
Ke hoʻohui mākou i nā code āpau, eia ke ʻano.
Ke ho'āʻo nei i ka pūnaewele neural
Ke hoʻouka nei i ka ʻikepili MNIST
ka ʻIkepili MNIST aia ma ka format .pkl.gz, a mākou e wehe ai me ka hoʻohana ʻana iā GZIP a hoʻouka me ka pickle. E kākau i kahi ala wikiwiki e hoʻouka ai i kēia ʻikepili ma ke ʻano he tuple o ka nui ʻekolu, i māhele ʻia i ka ʻikepili aʻo, hōʻoia, a me ka ʻikepili hoʻāʻo.
I mea e maʻalahi ai ka mālama ʻana i kā mākou ʻikepili, e kākau mākou i kahi hana ʻē aʻe e hoʻopaʻa ai i ka y i loko o kahi ʻāpana 10 mau mea. ʻO ka papa kuhikuhi he mau 0 a pau koe wale nō ka 1 e pili ana i ka huahelu kūpono o ke kiʻi.
E hoʻohana mākou i ka ʻikepili hoʻouka kumu a me hoʻokahi ala hoʻopili wela e hoʻouka i kā mākou ʻikepili i kahi ʻano hiki ke heluhelu ʻia. E kākau ʻia kekahi hana ʻē aʻe e hoʻololi i kā mākou mau waiwai x i ka papa inoa o ka nui 784, e pili ana i nā kiʻi 784 pixels, a me kā mākou mau waiwai i loko o kā lākou ʻano vector hoʻopili wela hoʻokahi.
A laila e hoʻohui mākou i nā koina x a me y e like me ka hoʻohālikelike ʻana o kekahi me kekahi. Pili kēia i ka hoʻomaʻamaʻa ʻana, hōʻoia, a me nā pūʻulu ʻikepili hoʻāʻo. A laila hoʻihoʻi mākou i ka ʻikepili i hoʻololi ʻia.
Nā hoʻāʻo holo
E hana mākou i kahi faila hou i kapa ʻia ʻo "mnist loader" e hoʻokomo i ka pūnaewele neural a mākou i hoʻokumu ai ma mua (maʻalahi nn) a me ka MNIST data set loader ma mua o ka hoʻomaka ʻana i ka hoʻāʻo.
Ma kēia faila, pono mākou e hana i ka lawe ʻana i ka ʻikepili, kūkulu i kahi pūnaewele me ka nui o ka papa hoʻokomo o 784 a me ka nui o ka papa hoʻopuka o 10, e holo i ka hana SGD o ka pūnaewele ma ka ʻikepili aʻo, a laila e hoʻāʻo me ka hoʻohana ʻana i ka ʻikepili hōʻike.
E hoʻomanaʻo no kā mākou papa inoa o nā papa hoʻokomo, ʻaʻohe mea ʻokoʻa i ke ʻano o nā helu ma waena o 784 a me 10. Hiki iā mākou ke hoʻololi i nā papa ʻē aʻe i ke ʻano a mākou e makemake ai; paʻa wale ka nui komo a me ka puka.
ʻAʻole pono nā papa ʻekolu; hiki iā mākou ke hoʻohana i ʻehā, ʻelima, a i ʻole ʻelua wale nō. E leʻaleʻa i ka hoʻokolohua ʻana me ia.
Panina
Ma ʻaneʻi, me ka hoʻohana ʻana iā Python 3, hana mākou i kahi neural network mai ka wā ʻōpala. Me ka makemakika pae kiʻekiʻe, ua kūkākūkā pū mākou i nā kikoʻī o ka hoʻokō.
Hoʻomaka mākou ma ka hoʻokō ʻana i nā hana kōkua. No ka hana ʻana o nā neurons, koʻikoʻi nā hana sigmoid a me sigmoid prime. A laila hoʻomaʻamaʻa mākou i ka hana feedforward, ʻo ia ke kaʻina kumu no ka hānai ʻana i ka ʻikepili i loko o ka pūnaewele neural.
A laila, hana mākou i ka hana gradient descent ma Python, ka mīkini e hoʻokele i kā mākou pūnaewele neural. I mea e ʻimi ai i ka "minima kūloko" a hoʻopaʻa pono i kā lākou mau kaupaona a me nā biases, hoʻohana kā mākou neural network i ka iho gradient. Hana mākou i ka hana backpropagation me ka hoʻohana ʻana iho gradient.
Ma ka hāʻawi ʻana i nā mea hou i ka wā ʻaʻole i kūlike nā huahana i nā lepili kūpono, hiki i kēia hana ke hiki i ka neural network ke "aʻo."
ʻO ka hope, hoʻokomo mākou i kā mākou Python hou kaʻenehana kikowaena i ka hoʻāʻo me ka hoʻohana ʻana i ka ʻikepili MNIST. Ua holo pono nā mea a pau.
Hauʻoli Coding!
Waiho i ka Reply