Table of Contents[Hide][Show]
Lub paj hlwb yog piv rau neural networks. Qhov no yog qhov piv txwv uas feem ntau yog siv los pab ib tus neeg tshiab rau qhov kev kawm kom nkag siab txog cov tswv yim tom qab kev kawm tshuab thiab cov khoom siv hluav taws xob neural.
Vim tias muaj ntau txheej txheej ntawm kev ua lej thiab kev suav lej mus tom qab, txhais cov tes hauj lwm no ua lej ua haujlwm yog ib txoj hauv kev zoo dua.
Qhov no yog rau cov neeg uas xav tau kev kawm tshuab thiab xav pom yuav ua li cas Python neural network code sau.
Hauv tsab xov xwm no, peb yuav qhia yuav ua li cas los tsim kom muaj kev sib txuas ua ke sib sib zog nqus neural network (DNN) los ntawm kos hauv Nab hab sej 3.
Ib tug txheej txheem cej luam ntawm cov ntaub ntawv Structure rau peb Python Neural Network Code
Yuav muaj peb cov ntaub ntawv tsim ntawm no. Thawj yog cov ntaub ntawv nn.py yooj yim, uas yuav tau tham hauv "Setting Up Helper Functions" thiab "Tsim Neural Network los ntawm Scratch."
Peb tseem yuav muaj cov ntaub ntawv hu ua mnist loader.py los thauj cov ntaub ntawv xeem, raws li tau piav qhia hauv "Loading MNIST Data."
Thaum kawg, peb yuav muaj cov ntaub ntawv hu ua test.py uas yuav raug tso tawm hauv lub davhlau ya nyob twg los sim peb cov neural network.
Cov ntaub ntawv no tau piav qhia meej hauv "Khiav Kev Xeem."
installation
Lub tsev qiv ntawv NumPy Python yuav tsum tau rub tawm kom ua raws li cov lus qhia no. Koj tuaj yeem ua tiav qhov no los ntawm kev siv cov lus txib hauv qab no ntawm lub davhlau ya nyob twg:
Importing Modules thiab teeb tsa tus pab cuam muaj nuj nqi
Tsuas yog ob lub tsev qiv ntawv peb xav tau yog random thiab NumPy, uas peb yuav import tam sim ntawd. Rau peb cov neural network thawj qhov hnyav, peb yuav hloov lawv siv lub tsev qiv ntawv random.
Txhawm rau ua kom peb cov kev suav ua kom nrawm, peb yuav siv NumPy lossis np (los ntawm lub rooj sib tham, nws feem ntau tuaj yeem ua np). Peb ob txoj haujlwm pabcuam yuav raug ua tom qab peb cov khoom tuaj. Ob txoj haujlwm sigmoid: ib qho thiab sigmoid prime.
Logistic regression yuav faib cov ntaub ntawv siv lub sigmoid muaj nuj nqi, thaum backpropagation yuav xam lub delta los yog gradient siv lub sigmoid prime function.
Tsim Network Class
Tsim kom muaj kev sib txuas tag nrho ntawm neural network yog tib lub hom phiaj ntawm ntu no. Cov chav kawm network yuav suav nrog tag nrho cov haujlwm uas tuaj tom qab. Lub function Object() { [native code] } yuav raug tsim thawj zaug hauv peb chav kawm network.
Ib qho kev sib cav, qhov ntau thiab tsawg, yuav tsum tau ua los ntawm kev ua haujlwm Object() { [native code] }. Qhov ntau thiab tsawg sib txawv yog ib qho kev sau ntawm cov lej uas sawv cev rau tus naj npawb ntawm cov tswv yim tawm tswv yim nyob rau hauv txhua txheej ntawm peb cov neural network.
Peb pib plaub lub zog hauv peb txoj kev __init__. Cov input variables, qhov ntau thiab tsawg, yog siv los teev cov npe ntawm txheej ntau thiab tsawg thiab tus naj npawb ntawm cov khaubncaws sab nraud povtseg, num txheej, feem.
Thawj kauj ruam yog randomly muab peb lub network thawj qhov kev tsis ncaj ncees rau txhua txheej uas ua raws cov txheej txheem nkag.
Thaum kawg, txhua qhov txuas ntawm cov khoom nkag thiab cov txheej txheem tso tawm muaj nws qhov hnyav randomly generated. Np.Random.Randn() muab ib qho piv txwv random kos los ntawm qhov ib txwm faib rau cov ntsiab lus.
Feed Forward Function
Hauv lub network neural, cov ntaub ntawv raug xa mus los ntawm kev ua haujlwm feedforward. Ib qho kev sib cav, a, qhia txog kev ua kom lub zog tam sim no, yuav tsum tau ua los ntawm txoj haujlwm no.
Qhov kev ua haujlwm no kwv yees cov kev ua haujlwm ntawm txhua txheej los ntawm iterating tshaj tag nrho cov kev tsis ncaj ncees thiab qhov hnyav hauv lub network. Cov lus teb tau muab yog qhov kev twv ua ntej, uas yog kev ua haujlwm ntawm txheej kawg.
Mini-batch Gradient qhovntsej thiaj tsis mob
Peb cov chav kawm Network's workhorse yog Gradient Descent. Nyob rau hauv no version, peb siv mini-batch (stochastic) gradient qhovntsej thiaj tsis mob, hloov pauv ntawm qhov qhovntsej thiaj tsis mob.
Qhov no qhia tau hais tias ib pawg me me ntawm cov ntaub ntawv cov ntsiab lus yuav raug siv los hloov kho peb cov qauv. Plaub qhov yuav tsum tau muaj thiab ib qho kev sib cav xaiv tau dhau mus rau txoj kev no. Plaub qhov kev hloov pauv uas yuav tsum tau muaj yog cov ntaub ntawv qhia kev cob qhia, tus lej ntawm lub sijhawm, qhov loj ntawm cov khoom siv me me, thiab tus nqi kawm (eta).
Cov ntaub ntawv xeem muaj nyob rau thaum thov. Peb mam li muab cov ntaub ntawv xeem thaum peb kawg ntsuas lub network no. Tus naj npawb ntawm cov qauv hauv qhov kev ua haujlwm no yog thawj zaug teem rau qhov ntev ntawm daim ntawv teev npe thaum cov ntaub ntawv kev cob qhia tau hloov mus rau hauv hom npe.
Peb kuj siv tib cov txheej txheem los kuaj cov ntaub ntawv uas tau muab rau hauv. Qhov no yog vim tsis muab xa rov qab rau peb raws li cov npe, lawv yog cov zips tiag tiag. Thaum peb thauj MNIST cov ntaub ntawv kuaj tom qab, peb yuav kawm ntxiv txog qhov no.
Yog tias peb tuaj yeem paub tseeb tias peb muab ob hom ntaub ntawv raws li cov npe, ces hom-casting no tsis yog qhov tseem ceeb.
Thaum peb muaj cov ntaub ntawv, peb mus dhau qhov kev cob qhia epochs hauv ib lub voj voog. Lub sijhawm cob qhia tsuas yog ib puag ncig ntawm kev cob qhia neural network. Peb thawj zaug shuffle cov ntaub ntawv nyob rau hauv txhua lub sij hawm kom paub meej randomness ua ntej ua ib daim ntawv teev cov mini-batch.
Qhov hloov tshiab mini batch muaj nuj nqi, uas tau tham hauv qab no, yuav raug hu rau txhua qhov mini-batch. Qhov ntsuas qhov tseeb yuav raug xa rov qab yog tias muaj cov ntaub ntawv xeem.
Tus nqi-derivative pab ua haujlwm
Cia peb tsim ib qho kev pab cuam hu ua tus nqi derivative ua ntej peb tiag tiag tsim lub backpropagation code. Yog hais tias peb ua yuam kev nyob rau hauv peb cov zis txheej, tus nqi derivative muaj nuj nqi yuav qhia nws.
Nws yuav tsum muaj ob lub tswv yim: qhov tso zis tso tawm array thiab y-coordinates ntawm qhov kev cia siab tso tawm qhov tseem ceeb.
Backpropagation muaj nuj nqi
Peb tam sim no activation vectors, ua kom, nrog rau lwm yam activation vectors, activations, thiab z-vectors, zs, yuav tsum tau khaws cia rau hauv siab. Ib txheej hu ua txheej txheej nkag tau qhib ua ntej.
Peb yuav ntsuas txhua qhov kev tsis ncaj ncees thiab qhov hnyav tom qab muab lawv tso. Txhua lub voj yuav suav nrog z vector raws li cov khoom lag luam ntawm qhov hnyav thiab qhov ua kom, ntxiv rau cov npe ntawm zs, rov xam qhov ua kom rov ua haujlwm, thiab ntxiv cov kev hloov kho tshiab rau cov npe ntawm kev ua haujlwm.
Thaum kawg, lej. Lub delta, uas yog sib npaug rau qhov ua yuam kev los ntawm txheej dhau los muab faib los ntawm sigmoid prime ntawm lub caij kawg ntawm zs vectors, yog xam ua ntej peb pib peb rov qab dhau.
Cov txheej kawg ntawm nabla b yog teem los ua tus delta, thiab txheej kawg ntawm nabla w yog teem los ua cov khoom dot ntawm lub delta thiab txheej thib ob-rau-kawg ntawm kev ua haujlwm (transposed yog li peb tuaj yeem ua lej) .
Peb ua raws li ua ntej, pib nrog txheej thib ob thiab xaus nrog qhov kawg, thiab rov ua cov txheej txheem tom qab ua tiav cov txheej txheem kawg. Cov nablas ces muab rov qab ua ib tug tuple.
Hloov kho Mini-batch gradient qhovntsej thiaj tsis mob
Peb SGD (stochastic gradient qhovntsej thiaj tsis mob) txoj hauv kev los ntawm ua ntej suav nrog kev hloov kho mini-batch. Txij li thaum nws tau siv hauv SGD tab sis kuj yuav tsum muaj backprop, kuv tau sib cav txog qhov twg los tso qhov haujlwm no.
Thaum kawg, kuv tau xaiv los tso nws ntawm no. Nws pib los ntawm generating 0 vectors ntawm lub biases 'thiab hnyav' nablas, ib yam li peb backprop muaj nuj nqi ua.
Nws yuav tsum tau mini-batch thiab tus nqi kawm eta raws li nws ob lub tswv yim. Hauv mini-batch, peb mam li siv lub backprop muaj nuj nqi kom tau qhov delta ntawm txhua nabla array rau txhua qhov kev tawm tswv yim, x, thiab cov zis, y. Cov npe nabla tau hloov kho nrog cov deltas no.
Thaum kawg, peb siv tus nqi kawm thiab nablas los hloov kho lub network qhov hnyav thiab kev tsis ncaj ncees. Txhua tus nqi yog hloov kho rau tus nqi tsis ntev los no, tsawg dua tus nqi kawm, muab faib los ntawm qhov loj me me, thiab tom qab ntawd ntxiv rau tus nqi nabla.
Ntsuas kev ua haujlwm
Qhov ntsuas ntsuas yog qhov kawg uas peb yuav tsum tau sau. Cov ntaub ntawv xeem yog tib lub tswv yim rau txoj haujlwm no. Hauv kev ua haujlwm no, peb tsuas yog sib piv cov txiaj ntsig ntawm lub network nrog cov txiaj ntsig xav tau, y. Los ntawm kev pub cov tswv yim, x, rau pem hauv ntej, cov txiaj ntsig ntawm lub network tau txiav txim siab.
Ua kom tiav Code
Thaum peb muab tag nrho cov cai, qhov no yog li cas nws tshwm.
Test Neural Network
Loading MNIST cov ntaub ntawv
cov MNIST cov ntaub ntawv yog nyob rau hauv .pkl.gz hom, uas peb mam li qhib siv GZIP thiab thauj nrog pickle. Cia peb sau cov txheej txheem ceev kom thauj cov ntaub ntawv no ua ib tuple ntawm peb qhov loj me, muab faib ua kev cob qhia, kev siv tau, thiab cov ntaub ntawv xeem.
Txhawm rau ua kom peb cov ntaub ntawv yooj yim los tswj, peb yuav sau lwm txoj haujlwm los encode y rau hauv 10-khoom array. Cov array yuav yog tag nrho 0s tshwj tsis yog rau 1 uas phim cov duab tus lej kom raug.
Peb yuav siv cov ntaub ntawv yooj yim thauj khoom thiab ib txoj hauv kev kub encode thauj peb cov ntaub ntawv mus rau hauv hom ntawv nyeem tau. Lwm txoj haujlwm yuav raug sau uas yuav hloov peb cov txiaj ntsig x rau hauv daim ntawv teev npe loj 784, sib piv rau cov duab 784 pixels, thiab peb cov txiaj ntsig y rau hauv lawv daim ntawv kub encoded vector.
Tom qab ntawd peb mam li muab cov x thiab y qhov tseem ceeb xws li qhov ntsuas qhov sib tw sib tw. Qhov no siv rau kev cob qhia, kev siv tau, thiab cov ntaub ntawv xeem. Peb mam li xa cov ntaub ntawv hloov pauv.
Kev xeem khiav
Peb yuav ua cov ntaub ntawv tshiab hu ua "mnist loader" uas yuav import ob qho tib si neural network peb tau tsim yav dhau los (nrhiav yooj yim) thiab MNIST cov ntaub ntawv teeb tsa ua ntej peb pib sim.
Nyob rau hauv cov ntaub ntawv no, txhua yam peb yuav tsum tau ua yog import cov ntaub ntawv, tsim ib lub network nrog ib tug input txheej loj ntawm 784 thiab cov zis txheej loj ntawm 10, khiav lub network SGD muaj nuj nqi ntawm cov ntaub ntawv kev cob qhia, ces sim nws siv cov ntaub ntawv xeem.
Nco ntsoov tias rau peb daim ntawv teev cov txheej txheem nkag, nws ua rau tsis muaj qhov sib txawv ntawm tus lej ntawm 784 thiab 10. Peb tuaj yeem hloov lwm cov khaubncaws sab nraud povtseg txhua yam peb nyiam; tsuas yog qhov input thiab tso zis ntau thiab tsawg yog tsau.
Peb txheej tsis tsim nyog; tej zaum peb yuav siv plaub, tsib, los sis tsuas yog ob. Muaj kev lom zem sim nrog nws.
xaus
Ntawm no, siv Python 3, peb tsim lub network neural los ntawm kos. Nrog rau kev ua lej qib siab, peb kuj tau tham txog qhov tshwj xeeb ntawm kev siv.
Peb pib los ntawm kev siv tus pab cuam. Rau cov neurons ua haujlwm, sigmoid thiab sigmoid prime functions yog qhov tseem ceeb. Peb mam li muab tso rau hauv kev xyaum feedforward muaj nuj nqi, uas yog lub hauv paus txheej txheem rau pub cov ntaub ntawv rau hauv lub neural network.
Tom ntej no, peb tsim cov gradient qhovntsej thiaj tsis mob hauv Python, lub cav uas tsav peb lub neural network. Txhawm rau nrhiav "hauv zos minima" thiab txhim kho lawv qhov hnyav thiab kev tsis ncaj ncees, peb lub network neural siv qhov gradient qhovntsej thiaj tsis mob. Peb tsim lub backpropagation muaj nuj nqi siv gradient qhovntsej thiaj tsis mob.
Los ntawm kev xa cov hloov tshiab thaum cov zis tsis sib xws nrog cov ntawv sau kom raug, qhov haujlwm no ua rau lub network neural "kawm."
Thaum kawg, peb muab peb cov Python tshiab neural network mus rau qhov kev xeem siv MNIST cov ntaub ntawv teev. Txhua yam ua haujlwm zoo.
Zoo siab Coding!
Sau ntawv cia Ncua