မာတိကာ[ဖျောက်][ရှိုး]
ဦးနှောက်သည် အာရုံကြောကွန်ရက်များနှင့် နှိုင်းယှဉ်နိုင်သည်။ ဤအရာသည် စက်သင်ယူမှုနှင့် အာရုံကြောကွန်ရက်များနောက်ကွယ်ရှိ အယူအဆများကို နားလည်ရန် ဘာသာရပ်အသစ်တစ်စုံတစ်ဦးကို အထောက်အကူဖြစ်စေရန်အတွက် ယေဘုယျအားဖြင့် အသုံးပြုလေ့ရှိသည့် ဥပမာဖြစ်သည်။
နောက်ကွယ်တွင် သင်္ချာနှင့် ကိန်းဂဏန်းတွက်ချက်မှု အလွှာများစွာ ရှိနေသောကြောင့် ဤကွန်ရက်များကို သင်္ချာလုပ်ဆောင်ချက်အဖြစ် သတ်မှတ်ခြင်းသည် ပိုမိုအဆင့်မြင့်သော နည်းလမ်းတစ်ခုဖြစ်သည်။
၎င်းသည် machine learning ကို အမှန်တကယ်စိတ်ဝင်စားပြီး Python neural network code ကို မည်သို့ရေးထားသည်ကို ကြည့်ရှုလိုသူများအတွက်ဖြစ်သည်။
ဤဆောင်းပါးတွင်၊ အပြည့်အဝချိတ်ဆက်ထားသောနက်နဲသောအာရုံကြောကွန်ရက် (DNN) ကို အစမှအဆုံးတည်ဆောက်ပုံအား ကျွန်ုပ်တို့သရုပ်ပြပါမည်။ Python ကို 3.
ကျွန်ုပ်တို့၏ Python Neural Network Code အတွက် ဖိုင်ဖွဲ့စည်းပုံ၏ ခြုံငုံသုံးသပ်ချက်
ဤနေရာတွင် ဖန်တီးထားသော ဖိုင်သုံးခုရှိသည်။ ပထမတစ်ခုကတော့ “ Helper Functions ကိုတည်ဆောက်ခြင်း” နှင့် “Scratch မှ Neural Network တည်ဆောက်ခြင်း” တွင် ဆွေးနွေးမည့် ရိုးရှင်းသော nn.py ဖိုင်ဖြစ်သည်။
“MNIST Data Loading” တွင်ဖော်ပြထားသည့်အတိုင်း စမ်းသပ်ဒေတာကိုတင်ရန်အတွက် mnist loader.py ဟုအမည်ပေးထားသောဖိုင်တစ်ခုလည်းရှိသည်။
နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့တွင် ကျွန်ုပ်တို့၏အာရုံကြောကွန်ရက်ကို စမ်းသပ်ရန်အတွက် terminal တွင်ထွက်ရှိမည့် test.py ဖိုင်တစ်ခုရှိသည်။
ဤဖိုင်ကို "Running Tests" တွင် အသေးစိတ်ဖော်ပြထားပါသည်။
installation
ဤသင်ခန်းစာကိုလိုက်နာရန် NumPy Python စာကြည့်တိုက်ကို ဒေါင်းလုဒ်လုပ်ရပါမည်။ Terminal ပေါ်ရှိ အောက်ပါ command ကို အသုံးပြု၍ ၎င်းကို သင် ပြီးမြောက်နိုင်သည် ။
မော်ဂျူးများကို တင်သွင်းခြင်းနှင့် Helper လုပ်ဆောင်ချက်ကို စနစ်ထည့်သွင်းခြင်း။
ကျွန်ုပ်တို့လိုအပ်သော စာကြည့်တိုက်နှစ်ခုမှာ ကျပန်းနှင့် NumPy ဖြစ်ပြီး၊ ကျွန်ုပ်တို့ ချက်ချင်းတင်သွင်းပါမည်။ ကျွန်ုပ်တို့၏ အာရုံကြောကွန်ရက်၏ ကနဦးအလေးချိန်များအတွက်၊ ကျပန်းစာကြည့်တိုက်ကို အသုံးပြု၍ ၎င်းတို့ကို ပေါင်းစပ်ပါမည်။
ကျွန်ုပ်တို့၏တွက်ချက်မှုများကို အရှိန်မြှင့်ရန်အတွက်၊ ကျွန်ုပ်တို့သည် NumPy သို့မဟုတ် np (ကွန်ဗင်းရှင်းအရ၊ ၎င်းကို မကြာခဏ npအဖြစ် ထည့်သွင်းသည်)။ ကျွန်ုပ်တို့၏ တင်သွင်းမှုအပြီးတွင် ကျွန်ုပ်တို့၏ အထောက်အမလုပ်ဆောင်ချက်နှစ်ခုကို ပြုလုပ်ပါမည်။ sigmoid လုပ်ဆောင်ချက်နှစ်ခု- တစ်ခုနှင့် sigmoid prime။
Logistic regression သည် sigmoid လုပ်ဆောင်ချက်ကို အသုံးပြု၍ ဒေတာကို အမျိုးအစားခွဲမည်ဖြစ်ပြီး backpropagation သည် sigmoid prime လုပ်ဆောင်ချက်ကို အသုံးပြု၍ မြစ်ဝကျွန်းပေါ် သို့မဟုတ် gradient ကို တွက်ချက်မည်ဖြစ်သည်။
Network Class ဖန်တီးခြင်း။
အပြည့်အဝချိတ်ဆက်ထားသော အာရုံကြောကွန်ရက်တစ်ခုတည်ဆောက်ခြင်းသည် ဤကဏ္ဍ၏တစ်ခုတည်းသောအာရုံစိုက်မှုဖြစ်သည်။ network class သည် နောက်ပိုင်းတွင် ပါလာသည့် function အားလုံးကို လွှမ်းခြုံထားမည်ဖြစ်သည်။ လုပ်ဆောင်ချက် Object() { [native code] } ကို ကျွန်ုပ်တို့၏ network class တွင် ကနဦးဖန်တီးမည်ဖြစ်သည်။
လုပ်ဆောင်ချက် Object() { [native code] } မှ အကြောင်းပြချက်တစ်ခု၊ အရွယ်အစားများကို လိုအပ်သည်။ အရွယ်အစား ပြောင်းလဲနိုင်သော ကိန်းဂဏန်းများသည် ကျွန်ုပ်တို့၏ အာရုံကြောကွန်ရက် အလွှာတစ်ခုစီတွင် ရှိနေသည့် input node အရေအတွက်ကို ကိုယ်စားပြုသည့် ဂဏန်းတန်ဖိုးများ အစုအဝေးတစ်ခုဖြစ်သည်။
ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ __init__ နည်းလမ်းတွင် ဂုဏ်သတ္တိလေးခုကို အစပြုပါသည်။ အလွှာများ၏ အရွယ်အစားများနှင့် အလွှာအရေအတွက်၊ နံပါတ်အလွှာများစာရင်းကို သတ်မှတ်ရန် ထည့်သွင်းရန် ကိန်းရှင်များ၊ အရွယ်အစားများကို အသုံးပြုသည်။
ပထမအဆင့်မှာ ကျွန်ုပ်တို့၏ကွန်ရက်၏ ကနဦးဘက်လိုက်မှုများကို ထည့်သွင်းသည့်အလွှာကို လိုက်နာသော အလွှာတစ်ခုစီသို့ ကျပန်းသတ်မှတ်ရန်ဖြစ်သည်။
နောက်ဆုံးတွင်၊ အဝင်နှင့်အထွက်အလွှာကြားရှိ လင့်ခ်တစ်ခုစီသည် ၎င်း၏အလေးချိန်များကို ကျပန်းထုတ်ပေးသည်။ Np.Random.Randn() သည် အကြောင်းအရာအတွက် ပုံမှန်ဖြန့်ဝေမှုမှ ထုတ်ယူထားသော ကျပန်းနမူနာကို ပေးသည်။
Feed Forward Function
အာရုံကြောကွန်ရက်တစ်ခုတွင် သတင်းအချက်အလက်များကို feedforward လုပ်ဆောင်ချက်ဖြင့် ရှေ့သို့ပို့သည်။ လက်ရှိ activation vector ကို ညွှန်ပြသော အငြင်းအခုံတစ်ခု၊ a သည် ဤလုပ်ဆောင်ချက်အတွက် လိုအပ်မည်ဖြစ်ပါသည်။
ဤလုပ်ဆောင်ချက်သည် ကွန်ရက်အတွင်းရှိ ဘက်လိုက်မှုများနှင့် အလေးချိန်များအားလုံးကို ထပ်လောင်းခြင်းဖြင့် အလွှာတစ်ခုစီမှ လုပ်ဆောင်ချက်များကို ခန့်မှန်းပေးသည်။ ပေးသောအဖြေမှာ နောက်ဆုံးအလွှာ၏ လုပ်ဆောင်ချက်ဖြစ်သည့် ခန့်မှန်းချက်ဖြစ်သည်။
Mini-batch Gradient အဆင်း
ကျွန်ုပ်တို့၏ Network class ၏ workhorse သည် Gradient Descent ဖြစ်သည်။ ဤဗားရှင်းတွင်၊ ကျွန်ုပ်တို့သည် သေးငယ်သောအသုတ် (stochastic) gradient ဆင်းသက်ခြင်း၊ gradient ဆင်းသက်ခြင်း၏ မွမ်းမံထားသော မူကွဲကို အသုံးပြုပါသည်။
၎င်းသည် ကျွန်ုပ်တို့၏မော်ဒယ်ကို မွမ်းမံရန်အတွက် ဒေတာအချက်အနည်းငယ်ကို အသုံးပြုမည်ဖြစ်ကြောင်း ဖော်ပြသည်။ လိုအပ်သော လေးခုနှင့် ရွေးချယ်နိုင်သော အငြင်းအခုံတစ်ခုကို ဤနည်းလမ်းသို့ ပေးပို့ပါသည်။ လိုအပ်သော variable လေးခုမှာ လေ့ကျင့်ရေးဒေတာအစုံ၊ အပိုင်းအရေအတွက်၊ အသေးစားအသုတ်များ၏ အရွယ်အစားနှင့် သင်ယူမှုနှုန်း (eta) တို့ဖြစ်သည်။
စမ်းသပ်မှုဒေတာကို တောင်းဆိုချက်အရ ရနိုင်ပါသည်။ နောက်ဆုံးတွင် ဤကွန်ရက်ကို အကဲဖြတ်သည့်အခါ ကျွန်ုပ်တို့သည် စမ်းသပ်ဒေတာကို ပံ့ပိုးပေးပါမည်။ လေ့ကျင့်ရေးဒေတာကို စာရင်းအမျိုးအစားအဖြစ် ပြောင်းလဲပြီးသည်နှင့် ဤလုပ်ဆောင်ချက်ရှိ နမူနာအရေအတွက်ကို စာရင်း၏အရှည်အဖြစ် သတ်မှတ်ထားသည်။
ပေးထားသည့် ဒေတာများကို စမ်းသပ်ရန်အတွက်လည်း အလားတူ လုပ်ငန်းစဉ်ကို ကျွန်ုပ်တို့ ကျင့်သုံးပါသည်။ ၎င်းမှာ စာရင်းများအဖြစ် ကျွန်ုပ်တို့ထံ ပြန်ပေးမည့်အစား၊ ၎င်းတို့သည် စာရင်းများ၏ ဇစ်များဖြစ်သည်။ ကျွန်ုပ်တို့ MNIST ဒေတာနမူနာများကို နောက်ပိုင်းတွင် တင်သည့်အခါ၊ ဤအကြောင်း ပိုမိုလေ့လာနိုင်ပါမည်။
စာရင်းများအဖြစ် ဒေတာအမျိုးအစားနှစ်မျိုးလုံးကို ပံ့ပိုးပေးနိုင်ကြောင်း သေချာနိုင်လျှင် ဤအမျိုးအစား-ကာစ်တင်ခြင်းသည် မရှိမဖြစ်လိုအပ်ပါသည်။
ဒေတာရရှိပြီးသည်နှင့် ကျွန်ုပ်တို့သည် လေ့ကျင့်ရေးကာလများကို ကွင်းဆက်တစ်ခုအဖြစ် ကျော်သွားကြသည်။ သင်တန်းကာလသည် အာရုံကြောကွန်ရက် လေ့ကျင့်မှု တစ်ကြိမ်သာဖြစ်သည်။ မီနီအတွဲများစာရင်းမပြုလုပ်မီ ကျပန်းဖြစ်မှုသေချာစေရန် ကျွန်ုပ်တို့သည် အပိုင်းတစ်ခုစီရှိဒေတာကို ဦးစွာ ပေါင်းစပ်ပါသည်။
အောက်တွင်ဖော်ပြထားသော အပ်ဒိတ်အသေးစားအသုတ်လုပ်ဆောင်ချက်ကို မီနီအသုတ်တစ်ခုစီအတွက် ခေါ်ပါမည်။ စမ်းသပ်မှုဒေတာရရှိနိုင်ပါက စမ်းသပ်မှုတိကျမှုကိုလည်း ပြန်ပေးပါမည်။
Cost-derivative helper လုပ်ဆောင်ချက်
backpropagation code ကိုတကယ်မဖန်တီးခင် cost derivative လို့ခေါ်တဲ့ helper function ကို အရင်လုပ်ရအောင်။ ကျွန်ုပ်တို့၏ အထွက်အလွှာတွင် အမှားလုပ်မိပါက၊ ကုန်ကျစရိတ် ဆင်းသက်သည့် လုပ်ဆောင်ချက်က ၎င်းကို ပြသမည်ဖြစ်သည်။
၎င်းသည် သွင်းအားစုနှစ်ခု လိုအပ်သည်- ထွက်လာသည့် လှုပ်ရှားမှုများ ခင်းကျင်းမှုနှင့် မျှော်မှန်းထားသော အထွက်တန်ဖိုးများ၏ y-coordinates များ။
Backpropagation လုပ်ဆောင်ချက်
ကျွန်ုပ်တို့၏ လက်ရှိ activation vector၊ activation နှင့် အခြားသော activation vectors၊ activation နှင့် z-vectors၊ zs တို့ကို အားလုံးကို မှတ်သားထားရပါမည်။ Input Layer ဟုခေါ်သော အလွှာကို ဦးစွာ အသက်သွင်းသည်။
အဲဒါတွေကို တင်ပြီးရင် ဘက်လိုက်မှု နဲ့ အလေးချိန် တစ်ခုစီကို လှည့်ပတ်ကြည့်မယ်။ ကွင်းဆက်တစ်ခုစီတွင် z vector ကို အလေးများ နှင့် activation ၏ အစက်အစက်အဖြစ် တွက်ချက်ခြင်း၊ zs စာရင်းထဲသို့ ထည့်ခြင်း၊ activation ကို ပြန်လည်တွက်ချက်ခြင်းနှင့် အပ်ဒိတ်လုပ်ထားသော activation ကို စာရင်းထဲသို့ ပေါင်းထည့်ခြင်းတို့ ပါဝင်ပါသည်။
နောက်ဆုံးတော့ သင်္ချာ။ zs vectors ၏နောက်ဆုံးဒြပ်စင်များ၏ sigmoid prime ဖြင့်မြှောက်ထားသောယခင်အလွှာမှအမှားနှင့်ညီမျှသော delta ကိုကျွန်ုပ်တို့၏နောက်ပြန်ဖြတ်သန်းမှုကိုမစတင်မီတွက်ချက်သည်။
nabla b ၏နောက်ဆုံးအလွှာကို မြစ်ဝကျွန်းပေါ်ဒေသအဖြစ်သတ်မှတ်ထားပြီး၊ nabla w ၏နောက်ဆုံးအလွှာသည် မြစ်ဝကျွန်းပေါ်ဒေသ၏အစက်နှင့်အသက်သွင်းခြင်း၏ဒုတိယမှနောက်ဆုံးအလွှာအဖြစ်သတ်မှတ်ထားသည် (သင်္ချာကိုအမှန်တကယ်လုပ်နိုင်သည်) .
ကျွန်ုပ်တို့သည် ဒုတိယအလွှာမှ စတင်ကာ နောက်ဆုံးအလွှာကို နိဂုံးချုပ်ကာ ယခင်အတိုင်း ဆက်လက်လုပ်ဆောင်ပြီး ဤနောက်ဆုံးအလွှာကို ပြီးမြောက်ပြီးနောက် လုပ်ငန်းစဉ်ကို ပြန်လုပ်ပါ။ ထို့နောက် နဘလက်များကို ကျူပလီအဖြစ် ပြန်လည်ပေးအပ်သည်။
Mini-batch gradient ဆင်းသက်မှုကို အပ်ဒိတ်လုပ်ခြင်း။
ကျွန်ုပ်တို့၏ SGD (stochastic gradient descent) နည်းလမ်းသည် မီနီ-အသုတ် အဆင့်မြှင့်တင်ခြင်းတွင် ပါဝင်ပါသည်။ ၎င်းကို SGD တွင်အသုံးပြုသော်လည်း backprop လည်းလိုအပ်သောကြောင့်၊ ဤလုပ်ဆောင်ချက်ကိုမည်သည့်နေရာတွင်ထားရမည်ကိုကျွန်တော်ဆွေးနွေးခဲ့သည်။
နောက်ဆုံးတော့ ဒီမှာတင်ဖို့ ရွေးချယ်လိုက်တယ်။ ကျွန်ုပ်တို့၏ backprop လုပ်ဆောင်မှုကဲ့သို့ပင် ဘက်လိုက်မှု 'နှင့် အလေး' nablas ၏ 0 vector များကို ဖန်တီးခြင်းဖြင့် စတင်သည်။
၎င်းသည် ၎င်း၏ထည့်သွင်းမှုနှစ်ခုအဖြစ် mini-batch နှင့် eta သင်ယူမှုနှုန်းကို လိုအပ်သည်။ mini-batch တွင်၊ input၊ x နှင့် output တစ်ခုစီအတွက် nabla array တစ်ခုစီ၏ delta ကိုရယူရန် backprop function ကိုအသုံးပြုသည်။ ထို့နောက် nabla စာရင်းများကို ဤမြစ်ဝကျွန်းပေါ်ဒေသများဖြင့် အပ်ဒိတ်လုပ်သည်။
နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် ကွန်ရက်၏ အလေးချိန်နှင့် ဘက်လိုက်မှုများကို အပ်ဒိတ်လုပ်ရန် သင်ယူမှုနှုန်းနှင့် nablas ကို အသုံးပြုပါသည်။ တန်ဖိုးတစ်ခုစီကို နောက်ဆုံးတန်ဖိုးသို့ အပ်ဒိတ်လုပ်သည်၊ သင်ယူမှုနှုန်းနည်းသည်၊ minibatch အရွယ်အစားဖြင့် မြှောက်ကာ nabla တန်ဖိုးသို့ ထည့်သည်။
လုပ်ဆောင်ချက်ကို အကဲဖြတ်ပါ။
အကဲဖြတ်ခြင်းလုပ်ဆောင်ချက်သည် ကျွန်ုပ်တို့ရေးသားရန်လိုအပ်သည့် နောက်ဆုံးတစ်ခုဖြစ်သည်။ စမ်းသပ်ဒေတာသည် ဤလုပ်ဆောင်ချက်အတွက် တစ်ခုတည်းသော ထည့်သွင်းမှုဖြစ်သည်။ ဤလုပ်ဆောင်ချက်တွင်၊ ကျွန်ုပ်တို့သည် မျှော်မှန်းထားသောရလဒ် y နှင့် ကွန်ရက်၏ရလဒ်များကိုသာ နှိုင်းယှဉ်ပါသည်။ input, x, forward ကို ကျွေးခြင်းဖြင့် network ၏ output ကို ဆုံးဖြတ်သည်။
ကုဒ်အပြည့်အစုံ
ကုဒ်အားလုံးကို ပေါင်းစပ်လိုက်သောအခါ၊ ၎င်းသည် ပေါ်လာသည်။
Neural Network ကို စမ်းသပ်ခြင်း။
MNIST ဒေတာကို ဖွင့်နေသည်။
အဆိုပါ MNIST ဒေတာ .pkl.gz ဖော်မတ်ဖြင့် ကျွန်ုပ်တို့သည် GZIP ကို အသုံးပြု၍ ဖွင့်ပြီး pickle ဖြင့် တင်ပါမည်။ ဤဒေတာကို လေ့ကျင့်မှု၊ အတည်ပြုချက်နှင့် စမ်းသပ်မှုဒေတာအဖြစ် ပိုင်းခြား၍ အရွယ်အစား XNUMX tuple အဖြစ် တင်ရန် အမြန်နည်းလမ်းကို ရေးကြပါစို့။
ကျွန်ုပ်တို့၏ဒေတာကို စီမံခန့်ခွဲရန် ပိုမိုလွယ်ကူစေရန်၊ ကျွန်ုပ်တို့သည် y ကို 10-item array တွင် encode လုပ်ရန် အခြားလုပ်ဆောင်ချက်ကို ရေးပါမည်။ ပုံ၏သင့်လျော်သောဂဏန်းနှင့်ကိုက်ညီသော 0 မှလွဲ၍ array သည် 1s အားလုံးဖြစ်လိမ့်မည်။
ကျွန်ုပ်တို့၏ဒေတာကို ဖတ်နိုင်သောဖော်မတ်သို့ တင်ရန် အခြေခံဝန်ဒေတာနှင့် hot encode နည်းလမ်းတစ်ခုကို အသုံးပြုပါမည်။ ကျွန်ုပ်တို့၏ x တန်ဖိုးများကို ပုံ၏ 784 ပစ်ဇယ်များနှင့် ကိုက်ညီသော အရွယ်အစား 784 စာရင်းအဖြစ်သို့ ပြောင်းပေးမည်ဖြစ်ပြီး ကျွန်ုပ်တို့၏ y တန်ဖိုးများကို ၎င်းတို့၏ hot encoded vector form အဖြစ်သို့ ပြောင်းပေးမည့် နောက်ထပ်လုပ်ဆောင်ချက်တစ်ခုကို ရေးသားပါမည်။
ထို့နောက် အညွှန်းတစ်ခုသည် အခြားတစ်ခုနှင့် ကိုက်ညီသော x နှင့် y တန်ဖိုးများကို ပေါင်းစပ်လိုက်ပါမည်။ ၎င်းသည် လေ့ကျင့်ရေး၊ တရားဝင်မှုနှင့် စမ်းသပ်မှုဒေတာအတွဲများနှင့် သက်ဆိုင်သည်။ ပြီးရင် ပြောင်းထားတဲ့ data ကို ပြန်ပေးတယ်။
စမ်းသပ်မှုများ လုပ်ဆောင်ခြင်း။
ကျွန်ုပ်တို့မစမ်းသပ်မစတင်မီ ကျွန်ုပ်တို့ယခင်ကတည်ဆောက်ခဲ့သော neural network (ရိုးရှင်းသော nn) နှင့် MNIST data set loader နှစ်ခုလုံးကိုတင်သွင်းမည့် "mnist loader" ဟုခေါ်သော ဖိုင်အသစ်တစ်ခုပြုလုပ်ပါမည်။
ဤဖိုင်တွင်၊ ကျွန်ုပ်တို့လုပ်ဆောင်ရမည့်အရာမှာ ဒေတာတင်သွင်းခြင်း၊ အဝင်အလွှာအရွယ်အစား 784 နှင့် အထွက်အလွှာအရွယ်အစား 10 ရှိသော ကွန်ရက်တစ်ခုတည်ဆောက်ခြင်း၊ လေ့ကျင့်ရေးဒေတာပေါ်တွင် ကွန်ရက်၏ SGD လုပ်ဆောင်ချက်ကို လုပ်ဆောင်ပြီး စမ်းသပ်ဒေတာကို အသုံးပြု၍ ၎င်းကို စမ်းသပ်ပါ။
ကျွန်ုပ်တို့၏ထည့်သွင်းသည့်အလွှာများစာရင်းအတွက်၊ ၎င်းသည် 784 နှင့် 10 အကြားရှိ နံပါတ်များကို ကွဲပြားစေမည်မဟုတ်ကြောင်း မှတ်သားထားပါ။ အခြားအလွှာများကို ကျွန်ုပ်တို့နှစ်သက်သလို ပြောင်းလဲနိုင်သည်။ input နှင့် output အရွယ်အစားများကိုသာသတ်မှတ်ထားသည်။
သုံးလွှာမလိုအပ်ပါ။ လေး၊ ငါး၊ ဒါမှမဟုတ် နှစ်ခုပဲ သုံးနိုင်တယ်။ အဲဒါကို စမ်းသပ်ပြီး ပျော်လိုက်ပါ။
ကောက်ချက်
ဤတွင်၊ Python 3 ကိုအသုံးပြု၍ ကျွန်ုပ်တို့သည် အာရုံကြောကွန်ရက်တစ်ခုကို အစမှအဆုံးဖန်တီးသည်။ အထက်တန်းအဆင့် သင်္ချာများနှင့်အတူ အကောင်အထည်ဖော်မှုဆိုင်ရာ အသေးစိတ်များကိုလည်း ဆွေးနွေးခဲ့ပါသည်။
အကူအညီပေးသည့်လုပ်ဆောင်ချက်များကို အကောင်အထည်ဖော်ခြင်းဖြင့် ကျွန်ုပ်တို့ စတင်ခဲ့သည်။ နျူရွန်များ အလုပ်လုပ်ရန်အတွက်၊ sigmoid နှင့် sigmoid အဓိကလုပ်ဆောင်မှုများသည် အရေးကြီးပါသည်။ ထို့နောက် ကျွန်ုပ်တို့သည် အာရုံကြောကွန်ရက်ထဲသို့ ဒေတာပေးပို့ခြင်းအတွက် အခြေခံလုပ်ငန်းစဉ်ဖြစ်သည့် feedforward function ကို လက်တွေ့ကျင့်သုံးခဲ့သည်။
ထို့နောက် ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ အာရုံကြောကွန်ရက်ကို မောင်းနှင်ပေးသည့် အင်ဂျင်၊ Python တွင် gradient descent function ကို ဖန်တီးခဲ့သည်။ “ဒေသတွင်း minima” ကို ရှာဖွေပြီး ၎င်းတို့၏ အလေးချိန်နှင့် ဘက်လိုက်မှုများကို အကောင်းဆုံးဖြစ်အောင် လုပ်ဆောင်ရန်အတွက်၊ ကျွန်ုပ်တို့၏ အာရုံကြောကွန်ရက်သည် gradient ဆင်းသက်မှုကို အသုံးပြုပါသည်။ ကျွန်ုပ်တို့သည် backpropagation function ကို အသုံးပြု၍ ဖန်တီးခဲ့သည်။ gradient အဆင်း.
ရလဒ်များသည် သင့်လျော်သော အညွှန်းများနှင့် မကိုက်ညီသည့်အခါ အပ်ဒိတ်များ ပေးပို့ခြင်းဖြင့်၊ ဤလုပ်ဆောင်ချက်သည် အာရုံကြောကွန်ရက်ကို “လေ့လာရန်” ကို လုပ်ဆောင်ပေးပါသည်။
နောက်ဆုံးတွင်၊ ကျွန်ုပ်တို့သည် ကျွန်ုပ်တို့၏ အသစ်စက်စက် Python ကို တင်လိုက်သည်။ အာရုံကြောကွန်ယက်ကို MNIST ဒေတာအစုံကို အသုံးပြု၍ စမ်းသပ်ရန်။ အရာအားလုံး ချောမွေ့စွာ လုပ်ဆောင်ခဲ့သည်။
မင်္ဂလာ Coding!
တစ်ဦးစာပြန်ရန် Leave