Tebulu ọdịnaya[Zoo][Gosi]
Ụbụrụ na-atụnyere netwọkụ akwara ozi. Nke a bụ ntụnyere nke a na-ejikarị enyere onye ọhụrụ aka ịghọta echiche dị n'azụ mmụta igwe na netwọk akwara.
N'ihi na enwere ọtụtụ usoro mgbakọ na mwepụ na mgbakọ na mwepụ na-aga n'azụ ihe nkiri, ịkọwa netwọk ndị a dị ka ọrụ mgbakọ na mwepụ bụ usoro dị elu karị.
Nke a bụ maka ndị nwere mmasị n'ezie mmụta igwe ma chọọ ịhụ ka esi ede koodu netwọkụ neural Python.
N'edemede a, anyị ga-egosi otu esi arụ netwọkụ akwara miri emi jikọtara nke ọma (DNN) site na ọkọ Python 3.
Nchịkọta nke nhazi faịlụ maka Koodu netwọkụ Neural Python anyị
A ga-enwe faịlụ atọ emepụtara ebe a. Nke mbụ bụ faịlụ nn.py dị mfe, nke a ga-atụle na "Ịtọlite Ọrụ Enyemaka" na "Iwulite Neural Network from Scratch."
Anyị ga-enwekwa faịlụ aha ya bụ mnist loader.py iji buo data ule, dị ka akọwara na "Loading MNIST Data."
N'ikpeazụ, anyị ga-enwe faịlụ aha ya bụ test.py nke a ga-ewepụta na njedebe iji nwalee netwọk akwara anyị.
A kọwara faịlụ a n'ụzọ zuru ezu na "Nnwale na-agba ọsọ."
nwụnye
A ga-ebudata ọba akwụkwọ NumPy Python iji soro nkuzi a. Ị nwere ike imezu nke a site na iji iwu na-esonụ na njedebe:
Ịbubata modul na ịtọlite ọrụ inyeaka
Naanị ọba akwụkwọ abụọ anyị chọrọ bụ random na NumPy, nke anyị ga-ebubata ozugbo. Maka ibu mbụ nke netwọkụ akwara ozi, anyị ga-eji ọba akwụkwọ na-enweghị usoro gwakọta ha.
Iji mee ka mgbakọ anyị dị ngwa, anyị ga-eji NumPy ma ọ bụ np (site na mgbakọ, a na-ebubakarị ya dị ka np). A ga-eme ọrụ enyemaka abụọ anyị mgbe mbubata anyị gasịrị. Ọrụ abụọ sigmoid: otu na sigmoid prime.
Ntughari mgbagha ga-ekewa data site na iji ọrụ sigmoid, ebe nkwado ndabere ga-agbakọ delta ma ọ bụ gradient site na iji sigmoid praịm ọrụ.
Ịmepụta klas netwọkụ
Iwulite netwọkụ akwara jikọtara nke ọma bụ naanị ebe a na-elekwasị anya na ngalaba a. Klas netwọk ga-agụnye ọrụ niile na-abịa. A ga-emepụta ọrụ Object() {[ koodu ala]} na mbụ na klas netwọk anyị.
Otu arụmụka, nha, chọrọ site na ọrụ Object() {[ koodu ala]}. Nha nha bụ nchịkọta ọnụọgụgụ nke na-anọchi anya ọnụ ọgụgụ ntinye ntinye dị na oyi akwa ọ bụla nke netwọkụ akwara anyị.
Anyị na-amalite ihe onwunwe anọ na usoro __init__ anyị. A na-eji mgbanwe ntinye, nha, iji tọọ ndepụta nke nha oyi akwa na ọnụ ọgụgụ nke ọkwa, ọnụọgụ ọnụọgụ, n'otu n'otu.
Nzọụkwụ mbụ bụ ikenye nhụsianya mbụ nke netwọk anyị na oyi akwa ọ bụla na-esote oyi akwa ntinye.
N'ikpeazụ, njikọ nke ọ bụla n'etiti ntinye na mmepụta n'ígwé nwere ibu arọ ya na-enweghị usoro. Np.Random.Randn() na-enye ihe atụ na-enweghị usoro ewepụtara site na nkesa nkịtị maka gburugburu.
Ọrụ aga n'ihu na-enye nri
Na netwọk akwara ozi, a na-eziga ozi site na ọrụ ntinye aka. Otu arụmụka, a, na-egosi vector na-arụ ọrụ ugbu a, ga-achọrọ site na ọrụ a.
Ọrụ a na-eme atụmatụ ịgbalite na oyi akwa nke ọ bụla site n'ịkọwapụta nhụsianya na ịdị arọ na netwọkụ niile. Azịza e nyere bụ amụma, nke bụ mmemme nke oyi akwa ikpeazụ.
Obere ogbe gradient mgbada
Ịnyịnya klaasị netwọkụ anyị bụ gradient Descent. N'ụdị a, anyị na-eji obere ogbe (stochastic) mgbada gradient, mgbanwe mgbanwe nke mgbada gradient.
Nke a na-egosi na a ga-eji obere ogbe data emelite ihe nlereanya anyị. A na-agafe ụzọ anọ achọrọ na otu arụmụka nhọrọ na usoro a. Ụdị mgbanwe anọ a chọrọ bụ nhazi data ọzụzụ, ọnụọgụ oge, nha nke obere batches na ọnụego mmụta (eta).
Data ule dị mgbe a rịọrọ ya. Anyị ga-eweta data ule mgbe anyị mechara nyochaa netwọk a. Ọnụ ọgụgụ nke nlele na ọrụ a ka edobere na ogologo nke ndepụta ahụ ozugbo data ọzụzụ gbanwere ka ọ bụrụ ụdị ndepụta.
Anyị na-etinyekwa otu usoro ahụ iji nwalee data enyere n'ime ya. Nke a bụ n'ihi na kama iweghachite anyị dị ka ndepụta, ha bụ n'ezie zips nke ndepụta. Mgbe anyị na-ebunye ihe nlele data MNIST ma emechaa, anyị ga-amụtakwu maka nke a.
Ọ bụrụ na anyị nwere ike ijide n'aka na anyị na-enye ụdị data abụọ dị ka ndepụta, mgbe ahụ ụdị nkedo a abụghị ihe dị mkpa.
Ozugbo anyị nwetara data ahụ, anyị na-agafe oge ọzụzụ na akaghị. Oge ọzụzụ bụ naanị otu agba nke ọzụzụ netwọkụ akwara. Anyị na-ebu ụzọ megharịa data ahụ n'ime oge ọ bụla iji hụ na enweghị usoro tupu ịme ndepụta nke obere batches.
A ga-akpọ ọrụ obere batch mmelite, nke a tụlere n'okpuru, maka obere ogbe ọ bụla. A ga-eweghachikwa izi ezi ule ma ọ bụrụ na data ule dị.
Ọrụ inyeaka na-enweta ego
Ka anyị buru ụzọ wulite ọrụ inyeaka nke a na-akpọ ọnụ ahịa tupu anyị ekee koodu nkwado ndabere. Ọ bụrụ na anyị mehie ihe na oyi akwa mmepụta anyị, ọrụ mmepụta ego ga-egosi ya.
Ọ na-achọ ntinye abụọ: nhazi nrụpụta ọrụ na y-coordinates nke ụkpụrụ mmepụta echere.
Ọrụ ịgbasa azụ
A ghaghị iburu n'uche na vector activation anyị dị ugbu a, ntinye, yana ihe ọ bụla ọzọ na-eme ka vector, activation, na z-vectors, zs, ga-eburu n'uche. A na-ebu ụzọ rụọ akwa oyi akwa a na-akpọ oyi akwa ntinye.
Anyị ga-enyocha echiche na ịdị arọ nke ọ bụla mgbe emechara ha. Loop nke ọ bụla na-agụnye ịgbakọ z vector dị ka ntụpọ ntụpọ nke ihe ọ̀tụ̀tụ̀ dị arọ na n'ịgbalite ya, na-agbakwụnye ya na ndepụta zs, na-atụgharịghachi ọrụ ahụ, na ịgbakwunye mmelite emelitere na ndepụta ọrụ.
N'ikpeazụ, mgbakọ na mwepụ. A na-agbakọ delta, nke ha nhata na njehie sitere na oyi akwa gara aga mụbaa site na sigmoid prime nke ikpeazụ element nke zs vectors, tupu anyị amalite ngafe azụ anyị.
A na-edobe oyi akwa ikpeazụ nke nabla b ka ọ bụrụ delta, na oyi akwa ikpeazụ nke nabla w ka edobere ka ọ bụrụ ngwaahịa ntụpọ nke delta na oyi akwa nke ikpeazụ na nke ikpeazụ (transposed ka anyị nwee ike ịme mgbakọ na mwepụ) .
Anyị na-aga n'ihu dị ka ọ dị na mbụ, na-amalite na oyi akwa nke abụọ ma mechie nke ikpeazụ, ma megharịa usoro ahụ mgbe ịmechara ọkwa ikpeazụ ndị a. A na-enyeghachikwa nablas ahụ dị ka tuple.
Na-emelite mgbada gradient Obere
Usoro SGD anyị (stochastic gradient descent) sitere na mbụ na-etinye mmelite obere ogbe. Ebe ọ bụ na ejiri ya na SGD mana ọ na-achọkwa backprop, m na-arụrịta ụka ebe m ga-etinye ọrụ a.
N'ikpeazụ, emere m nhọrọ ibipute ya ebe a. Ọ na-amalite site n'ịmepụta 0 vectors nke echiche nablas' na ịdị arọ, dị ka ọrụ backprop anyị mere.
Ọ chọrọ obere batch na ọnụego mmụta eta dị ka ntinye ya abụọ. Na obere-batch, anyị na-eji ọrụ backprop nweta delta nke ọ bụla nabla array maka ntinye ọ bụla, x, na mmepụta, y. A na-eji delta ndị a emelite ndepụta nabla ahụ.
N'ikpeazụ, anyị na-eji ọnụego mmụta na nablas iji melite nha netwọkụ na nhụsianya. A na-emelite uru ọ bụla ka ọ bụrụ ọnụ ahịa kacha ọhụrụ, na-ebelata ọnụego mmụta, mụbaa site na nha obere, wee tinye ya na uru nabla.
Nyochaa ọrụ
Ọrụ nyocha bụ nke ikpeazụ anyị kwesịrị ide. Data ule bụ naanị ntinye maka ọrụ a. N'ime ọrụ a, anyị na-atụnyere naanị nsonaazụ nke netwọk na nsonaazụ a na-atụ anya ya, y. Site n'inye ntinye, x, n'ihu, a na-ekpebi mmepụta nke netwọk ahụ.
Koodu zuru ezu
Mgbe anyị jikọtara koodu niile, otu a ka ọ dị.
Nnwale Neural Network
Na-ebu data MNIST
The MNIST data dị na usoro .pkl.gz, nke anyị ga-emepe site na iji GZIP ma buru ya na pickle. Ka anyị dee usoro ngwa ngwa iji buo data a dị ka ihe nha atọ, kewara n'ime ọzụzụ, nkwado na data nyocha.
Iji mee ka data anyị dị mfe ijikwa, anyị ga-ede ọrụ ọzọ iji tinye y n'ime nhazi ihe iri. Nhazi ahụ ga-abụ 10s niile ma e wezụga otu 0 dabara na ọnụọgụ ziri ezi nke onyonyo a.
Anyị ga-eji data ibu bụ isi yana otu ụzọ koodu nzuzo iji buo data anyị ka ọ bụrụ usoro enwere ike ịgụ. A ga-ede ọrụ ọzọ nke ga-agbanwe ụkpụrụ x anyị ka ọ bụrụ ndepụta nke nha 784, dabara na pikselụ 784 nke onyonyo a, yana ụkpụrụ y anyị n'ime otu ụdị vector ha na-ekpo ọkụ.
Mgbe ahụ, anyị ga-ejikọta ụkpụrụ x na y nke mere na otu ndeksi dabara na nke ọzọ. Nke a na-emetụta ọzụzụ, nkwado, na nyocha data setịpụ. Anyị weghachite data gbanwere.
Nnwale ịgba ọsọ
Anyị ga-eme faịlụ ọhụrụ akpọrọ “mnist loader” nke ga-ebubata ma netwọkụ akwara anyị hibere na mbụ (nn dị mfe) yana ihe ntinye data setịpụ MNIST tupu anyị amalite nnwale.
N'ime faịlụ a, naanị ihe anyị ga-eme bụ ibubata data, wuo netwọk nwere ntinye oyi akwa nke 784 yana nha mmepụta nke 10, rụọ ọrụ SGD nke netwọkụ na data ọzụzụ, wee nwalee ya site na iji data nnwale.
Buru n'uche na maka ndepụta ntinye ntinye anyị, ọ naghị eme ka ihe ọ bụla n'ime nọmba dị n'etiti 784 na 10. Anyị nwere ike ịgbanwe ọkwa ndị ọzọ n'ụzọ ọ bụla masịrị anyị; naanị ntinye na nha mmepụta ka edoziri.
Atọ oyi akwa adịghị mkpa; anyị nwere ike iji anọ, ise, ma ọ bụ ọbụna naanị abụọ. Nwee anụrị ịnwale ya.
mmechi
N'ebe a, na-eji Python 3, anyị na-emepụta netwọk neural site na ọkọ. Tinyere mgbakọ na mwepụ dị elu, anyị tụlekwara nkọwa nke mmejuputa iwu.
Anyị malitere site n'itinye ọrụ enyemaka. Maka neurons ka ọ rụọ ọrụ, ọrụ sigmoid na sigmoid praịm dị mkpa. Mgbe ahụ, anyị na-etinye n'ọrụ feedforward, nke bụ isi usoro maka ịnye data n'ime netwọk akwara.
Ọzọ, anyị mepụtara ọrụ mgbada gradient na Python, injin na-ebugharị netwọkụ akwara anyị. Iji chọta “obere minima” wee kwalite ịdị arọ na echiche ha, netwọkụ akwara anyị na-eji mgbada gradient. Anyị ji ọrụ mebere ọrụ nkwado ndabere mgbada gradient.
Site n'iwepụta mmelite mgbe nsonaazụ ya adabaghị na akara aha kwesịrị ekwesị, ọrụ a na-enyere netwọkụ akwara aka “mụta”.
N'ikpeazụ, anyị tinyere Python ọhụrụ anyị neural network iji nyocha data MNIST. Ihe niile na-arụ ọrụ nke ọma.
Obi ụtọ na nzuzo!
Nkume a-aza