ສາລະບານ[ເຊື່ອງ][ສະແດງ]
ສະຫມອງແມ່ນປຽບທຽບກັບເຄືອຂ່າຍ neural. ນີ້ແມ່ນການປຽບທຽບທີ່ປົກກະຕິແລ້ວແມ່ນໃຊ້ເພື່ອຊ່ວຍຄົນໃໝ່ໃນເລື່ອງໃຫ້ເຂົ້າໃຈແນວຄວາມຄິດທີ່ຢູ່ເບື້ອງຫຼັງການຮຽນຮູ້ເຄື່ອງຈັກ ແລະ ເຄືອຂ່າຍປະສາດທຽມ.
ເນື່ອງຈາກວ່າມີຫຼາຍຂັ້ນຕອນຂອງການຄິດໄລ່ທາງຄະນິດສາດແລະສະຖິຕິທີ່ດໍາເນີນຢູ່ເບື້ອງຫຼັງ, ການກໍານົດເຄືອຂ່າຍເຫຼົ່ານີ້ເປັນຫນ້າທີ່ທາງຄະນິດສາດແມ່ນວິທີການທີ່ກ້າວຫນ້າກວ່າ.
ນີ້ແມ່ນສໍາລັບຜູ້ທີ່ມີຄວາມສົນໃຈໃນການຮຽນຮູ້ເຄື່ອງຈັກແລະຕ້ອງການເບິ່ງວິທີການຂຽນລະຫັດເຄືອຂ່າຍ neural Python.
ໃນບົດຄວາມນີ້, ພວກເຮົາຈະສະແດງໃຫ້ເຫັນວິທີການສ້າງເຄືອຂ່າຍ neural ເລິກເຊື່ອມຕໍ່ຢ່າງເຕັມສ່ວນ (DNN) ຕັ້ງແຕ່ເລີ່ມຕົ້ນໃນ Python 3.
ພາບລວມຂອງໂຄງສ້າງໄຟລ໌ສໍາລັບລະຫັດເຄືອຂ່າຍ Neural Python ຂອງພວກເຮົາ
ຈະມີສາມໄຟລ໌ທີ່ສ້າງຂຶ້ນຢູ່ທີ່ນີ້. ທໍາອິດແມ່ນໄຟລ໌ nn.py ງ່າຍດາຍ, ເຊິ່ງຈະຖືກປຶກສາຫາລືໃນ "ການຕັ້ງຫນ້າທີ່ຜູ້ຊ່ວຍ" ແລະ "ການສ້າງເຄືອຂ່າຍ Neural ຈາກ Scratch."
ພວກເຮົາຍັງຈະມີໄຟລ໌ທີ່ມີຊື່ mnist loader.py ເພື່ອໂຫລດຂໍ້ມູນການທົດສອບ, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນ "ການໂຫຼດຂໍ້ມູນ MNIST."
ສຸດທ້າຍ, ພວກເຮົາຈະມີໄຟລ໌ທີ່ມີຊື່ວ່າ test.py ທີ່ຈະເປີດຕົວໃນ terminal ເພື່ອທົດສອບເຄືອຂ່າຍ neural ຂອງພວກເຮົາ.
ໄຟລ໌ນີ້ໄດ້ຖືກອະທິບາຍຢ່າງລະອຽດໃນ "ການທົດສອບແລ່ນ."
ການຕິດຕັ້ງ
ຕ້ອງດາວໂຫຼດຫ້ອງສະໝຸດ NumPy Python ເພື່ອປະຕິບັດຕາມຄຳແນະນຳນີ້. ທ່ານສາມາດເຮັດສໍາເລັດໂດຍການນໍາໃຊ້ຄໍາສັ່ງດັ່ງຕໍ່ໄປນີ້ຢູ່ໃນ terminal:
ການນໍາເຂົ້າໂມດູນແລະການຕັ້ງຄ່າຫນ້າທີ່ຜູ້ຊ່ວຍ
ສອງຫ້ອງສະຫມຸດທີ່ພວກເຮົາຕ້ອງການແມ່ນແບບສຸ່ມແລະ NumPy, ເຊິ່ງພວກເຮົາຈະນໍາເຂົ້າທັນທີ. ສໍາລັບນ້ໍາຫນັກເບື້ອງຕົ້ນຂອງເຄືອຂ່າຍ neural ຂອງພວກເຮົາ, ພວກເຮົາຈະສະຫຼັບພວກມັນໂດຍໃຊ້ຫ້ອງສະຫມຸດແບບສຸ່ມ.
ເພື່ອເລັ່ງການຄິດໄລ່ຂອງພວກເຮົາ, ພວກເຮົາຈະໃຊ້ NumPy ຫຼື np (ໂດຍສົນທິສັນຍາ, ມັນມັກຈະຖືກນໍາເຂົ້າເປັນ np). ຫນ້າທີ່ຜູ້ຊ່ວຍສອງຂອງພວກເຮົາຈະເຮັດຫຼັງຈາກການນໍາເຂົ້າຂອງພວກເຮົາ. ສອງຫນ້າທີ່ sigmoid: ຫນຶ່ງແລະ sigmoid prime.
Logistic regression ຈະຈັດປະເພດຂໍ້ມູນໂດຍໃຊ້ຟັງຊັນ sigmoid, ໃນຂະນະທີ່ backpropagation ຈະຄິດໄລ່ delta ຫຼື gradient ໂດຍໃຊ້ sigmoid prime function.
ການສ້າງຫ້ອງຮຽນເຄືອຂ່າຍ
ການສ້າງເຄືອຂ່າຍ neural ທີ່ເຊື່ອມໂຍງຢ່າງເຕັມສ່ວນແມ່ນຈຸດສຸມດຽວຂອງພາກນີ້. ຫ້ອງຮຽນເຄືອຂ່າຍຈະລວມເອົາຫນ້າທີ່ທັງຫມົດທີ່ມາຫຼັງຈາກ. ຟັງຊັນ Object() { [native code] } ຈະຖືກສ້າງໃນເບື້ອງຕົ້ນໃນຫ້ອງຮຽນເຄືອຂ່າຍຂອງພວກເຮົາ.
ຫນຶ່ງ argument, ຂະຫນາດ, ແມ່ນຕ້ອງການໂດຍຟັງຊັນ Object() { [native code] }. ຕົວແປຂະໜາດແມ່ນຊຸດຂອງຄ່າຕົວເລກທີ່ສະແດງເຖິງຈຳນວນຂອງຂໍ້ປ້ອນຂໍ້ມູນທີ່ມີຢູ່ໃນແຕ່ລະຊັ້ນຂອງເຄືອຂ່າຍ neural ຂອງພວກເຮົາ.
ພວກເຮົາເລີ່ມຕົ້ນສີ່ຄຸນສົມບັດໃນວິທີການ __init__ ຂອງພວກເຮົາ. ຕົວແປການປ້ອນຂໍ້ມູນ, ຂະຫນາດ, ຖືກນໍາໃຊ້ເພື່ອກໍານົດບັນຊີລາຍຊື່ຂອງຂະຫນາດຊັ້ນແລະຈໍານວນຊັ້ນ, ຈໍານວນຊັ້ນ, ຕາມລໍາດັບ.
ຂັ້ນຕອນທໍາອິດແມ່ນການຕັ້ງຄ່າອະຄະຕິເບື້ອງຕົ້ນເຄືອຂ່າຍຂອງພວກເຮົາ Random ກັບແຕ່ລະຊັ້ນທີ່ຕິດຕາມຊັ້ນນໍາເຂົ້າ.
ສຸດທ້າຍ, ແຕ່ລະເຊື່ອມຕໍ່ລະຫວ່າງຊັ້ນປ້ອນຂໍ້ມູນແລະຜົນຜະລິດມີນ້ໍາຫນັກທີ່ສ້າງຂຶ້ນແບບສຸ່ມ. Np.Random.Randn() ໃຫ້ຕົວຢ່າງແບບສຸ່ມທີ່ມາຈາກການແຈກຢາຍປົກກະຕິສຳລັບບໍລິບົດ.
ຟັງຊັນ Feed Forward
ໃນເຄືອຂ່າຍ neural, ຂໍ້ມູນຈະຖືກສົ່ງຕໍ່ໂດຍຟັງຊັນ feedforward. ຫນຶ່ງ argument, a, ຊີ້ບອກ vector ການກະຕຸ້ນປະຈຸບັນ, ຈະຕ້ອງໄດ້ໂດຍຟັງຊັນນີ້.
ຟັງຊັນນີ້ຄາດຄະເນການເປີດໃຊ້ງານໃນແຕ່ລະຊັ້ນໂດຍການເຮັດຊໍ້າຄືນຂອງອະຄະຕິ ແລະນໍ້າໜັກທັງໝົດໃນເຄືອຂ່າຍ. ຄໍາຕອບທີ່ໄດ້ຮັບແມ່ນການຄາດຄະເນ, ເຊິ່ງເປັນການກະຕຸ້ນຂອງຊັ້ນສຸດທ້າຍ.
Mini-batch ການສືບເຊື້ອສາຍ Gradient
Workhorse ຂອງຫ້ອງຮຽນເຄືອຂ່າຍຂອງພວກເຮົາແມ່ນ Gradient Descent. ໃນສະບັບນີ້, ພວກເຮົານໍາໃຊ້ mini-batch (stochastic) ການສືບເຊື້ອສາຍ gradient, ເປັນການປ່ຽນແປງຂອງການສືບເຊື້ອສາຍ gradient.
ນີ້ຊີ້ບອກວ່າຈຸດຂໍ້ມູນນ້ອຍໆຈະຖືກໃຊ້ເພື່ອອັບເດດຕົວແບບຂອງພວກເຮົາ. ສີ່ອັນທີ່ຕ້ອງການ ແລະໜຶ່ງການໂຕ້ແຍ້ງທາງເລືອກແມ່ນໄດ້ສົ່ງຜ່ານວິທີການນີ້. ສີ່ຕົວແປທີ່ຕ້ອງການແມ່ນຊຸດຂໍ້ມູນການຝຶກອົບຮົມ, ຈໍານວນ epochs, ຂະຫນາດຂອງ mini-batches, ແລະອັດຕາການຮຽນຮູ້ (eta).
ຂໍ້ມູນການທົດສອບແມ່ນມີໃຫ້ຕາມການຮ້ອງຂໍ. ພວກເຮົາຈະສະໜອງຂໍ້ມູນການທົດສອບເມື່ອພວກເຮົາປະເມີນເຄືອຂ່າຍນີ້ໃນທີ່ສຸດ. ຈໍານວນຕົວຢ່າງໃນຟັງຊັນນີ້ໃນເບື້ອງຕົ້ນໄດ້ຖືກກໍານົດເປັນຄວາມຍາວຂອງບັນຊີລາຍຊື່ເມື່ອຂໍ້ມູນການຝຶກອົບຮົມໄດ້ຖືກປ່ຽນເປັນປະເພດບັນຊີລາຍຊື່.
ພວກເຮົາຍັງນໍາໃຊ້ຂະບວນການດຽວກັນເພື່ອທົດສອບຂໍ້ມູນທີ່ໄດ້ຮັບໃນ. ນີ້ແມ່ນຍ້ອນວ່າແທນທີ່ຈະຖືກສົ່ງຄືນໃຫ້ພວກເຮົາເປັນບັນຊີລາຍຊື່, ພວກມັນເປັນ zips ຂອງລາຍຊື່ແທ້ໆ. ເມື່ອພວກເຮົາໂຫລດຕົວຢ່າງຂໍ້ມູນ MNIST ຕໍ່ມາ, ພວກເຮົາຈະຮຽນຮູ້ເພີ່ມເຕີມກ່ຽວກັບເລື່ອງນີ້.
ຖ້າພວກເຮົາສາມາດເຮັດໃຫ້ແນ່ໃຈວ່າພວກເຮົາສະຫນອງຂໍ້ມູນທັງສອງປະເພດເປັນລາຍການ, ຫຼັງຈາກນັ້ນການໂຍນປະເພດນີ້ບໍ່ຈໍາເປັນ.
ເມື່ອພວກເຮົາມີຂໍ້ມູນ, ພວກເຮົາໄປໃນໄລຍະການຝຶກອົບຮົມໃນ loop ເປັນ. ໄລຍະເວລາການຝຶກອົບຮົມແມ່ນພຽງແຕ່ຫນຶ່ງຮອບຂອງການຝຶກອົບຮົມເຄືອຂ່າຍ neural. ທໍາອິດພວກເຮົາ shuffle ຂໍ້ມູນໃນແຕ່ລະ epoch ເພື່ອຮັບປະກັນການສຸ່ມກ່ອນທີ່ຈະເຮັດບັນຊີລາຍຊື່ຂອງ mini-batches.
ຟັງຊັນ mini batch ການປັບປຸງ, ເຊິ່ງໄດ້ຖືກປຶກສາຫາລືຂ້າງລຸ່ມນີ້, ຈະຖືກເອີ້ນສໍາລັບແຕ່ລະ mini-batch. ຄວາມຖືກຕ້ອງຂອງການທົດສອບຈະຖືກສົ່ງຄືນຖ້າມີຂໍ້ມູນການທົດສອບ.
ການທໍາງານຂອງຕົວຊ່ວຍຄ່າໃຊ້ຈ່າຍ
ໃຫ້ພວກເຮົາພັດທະນາຫນ້າທີ່ຂອງຕົວຊ່ວຍທີ່ເອີ້ນວ່າ cost derivative ທໍາອິດກ່ອນທີ່ພວກເຮົາຈະສ້າງລະຫັດ backpropagation. ຖ້າພວກເຮົາເຮັດຜິດພາດໃນຊັ້ນຜົນຜະລິດຂອງພວກເຮົາ, ຟັງຊັນອະນຸພັນຄ່າໃຊ້ຈ່າຍຈະສະແດງມັນ.
ມັນຮຽກຮ້ອງໃຫ້ມີການປ້ອນຂໍ້ມູນສອງອັນ: array ການເປີດໃຊ້ງານຜົນໄດ້ຮັບ ແລະ y-coordinates ຂອງຄ່າຜົນຜະລິດທີ່ຄາດໄວ້.
ຟັງຊັນການຂະຫຍາຍພັນ
vector ການກະຕຸ້ນໃນປະຈຸບັນຂອງພວກເຮົາ, ການເປີດໃຊ້ງານ, ເຊັ່ນດຽວກັນກັບ vectors ການກະຕຸ້ນອື່ນໆ, ການເປີດໃຊ້ງານ, ແລະ z-vectors, zs, ທັງຫມົດຕ້ອງໄດ້ຮັບການເກັບຮັກສາໄວ້ໃນໃຈ. ຊັ້ນຂໍ້ມູນທີ່ເອີ້ນວ່າຊັ້ນປ້ອນຂໍ້ມູນຈະຖືກເປີດໃຊ້ກ່ອນ.
ພວກເຮົາຈະຕິດຕາມຄວາມລໍາອຽງແລະນ້ໍາຫນັກຂອງແຕ່ລະຫຼັງຈາກການວາງໃຫ້ເຂົາເຈົ້າ. ແຕ່ລະ loop ກ່ຽວຂ້ອງກັບການຄໍານວນ z vector ເປັນ dot ຜະລິດຕະພັນຂອງນ້ໍາຫນັກແລະການກະຕຸ້ນ, ເພີ່ມມັນໃສ່ບັນຊີລາຍຊື່ຂອງ zs, recalculating ການເປີດໃຊ້ງານ, ແລະເພີ່ມການກະຕຸ້ນການປັບປຸງໃນບັນຊີລາຍຊື່ຂອງການກະຕຸ້ນ.
ສຸດທ້າຍ, ຄະນິດສາດ. delta, ເຊິ່ງເທົ່າກັບຄວາມຜິດພາດຈາກຊັ້ນກ່ອນຫນ້າຄູນດ້ວຍ sigmoid prime ຂອງອົງປະກອບສຸດທ້າຍຂອງ vectors zs, ແມ່ນຖືກຄິດໄລ່ກ່ອນທີ່ພວກເຮົາຈະເລີ່ມຕົ້ນການຜ່ານກັບຄືນໄປບ່ອນຂອງພວກເຮົາ.
ຊັ້ນສຸດທ້າຍຂອງ nabla b ຖືກຕັ້ງເປັນ delta, ແລະຊັ້ນສຸດທ້າຍຂອງ nabla w ຖືກຕັ້ງໃຫ້ເປັນຜະລິດຕະພັນຈຸດຂອງ delta ແລະຊັ້ນທີສອງຫາສຸດທ້າຍຂອງການກະຕຸ້ນ (transposed ດັ່ງນັ້ນພວກເຮົາສາມາດເຮັດຄະນິດສາດໄດ້) .
ພວກເຮົາດໍາເນີນການດັ່ງກ່ອນ, ເລີ່ມຕົ້ນດ້ວຍຊັ້ນທີສອງແລະສະຫຼຸບດ້ວຍຊັ້ນສຸດທ້າຍ, ແລະເຮັດຊ້ໍາຂະບວນການຫຼັງຈາກສໍາເລັດຊັ້ນສຸດທ້າຍເຫຼົ່ານີ້. ຫຼັງຈາກນັ້ນ, nablas ໄດ້ຖືກມອບຄືນເປັນ tuple.
ການປັບປຸງການສືບເຊື້ອສາຍ gradient Mini-batch
ວິທີການ SGD (stochastic gradient descent) ຂອງພວກເຮົາຈາກກ່ອນທີ່ຈະລວມເອົາການອັບເດດ mini-batch. ເນື່ອງຈາກວ່າມັນຖືກນໍາໃຊ້ໃນ SGD ແຕ່ຍັງຕ້ອງການ backprop, ຂ້າພະເຈົ້າໄດ້ໂຕ້ວາທີວ່າຈະໃສ່ຫນ້າທີ່ນີ້.
ສຸດທ້າຍ, ຂ້ອຍໄດ້ເລືອກທີ່ຈະປະກາດມັນຢູ່ທີ່ນີ້. ມັນເລີ່ມຕົ້ນໂດຍການສ້າງ 0 vectors ຂອງ biases 'ແລະ weights' nablas, ຄືກັນກັບຫນ້າທີ່ backprop ຂອງພວກເຮົາເຮັດ.
ມັນຮຽກຮ້ອງໃຫ້ມີ mini-batch ແລະອັດຕາການຮຽນຮູ້ eta ເປັນສອງວັດສະດຸປ້ອນຂອງມັນ. ໃນ mini-batch, ຫຼັງຈາກນັ້ນພວກເຮົາໃຊ້ຟັງຊັນ backprop ເພື່ອໃຫ້ໄດ້ຮັບ delta ຂອງແຕ່ລະ nabla array ສໍາລັບແຕ່ລະ input, x, ແລະ output, y. ຫຼັງຈາກນັ້ນ, ບັນຊີລາຍຊື່ nabla ໄດ້ຖືກປັບປຸງດ້ວຍ deltas ເຫຼົ່ານີ້.
ສຸດທ້າຍ, ພວກເຮົາໃຊ້ອັດຕາການຮຽນຮູ້ແລະ nablas ເພື່ອປັບປຸງນ້ໍາຫນັກແລະຄວາມລໍາອຽງຂອງເຄືອຂ່າຍ. ແຕ່ລະຄ່າຖືກປັບປຸງເປັນມູນຄ່າຫຼ້າສຸດ, ອັດຕາການຮຽນຮູ້ຫນ້ອຍ, ຄູນດ້ວຍຂະຫນາດ minibatch, ແລະຫຼັງຈາກນັ້ນເພີ່ມໃສ່ຄ່າ nabla.
ປະເມີນຫນ້າທີ່
ຟັງຊັນການປະເມີນຜົນແມ່ນອັນສຸດທ້າຍທີ່ພວກເຮົາຕ້ອງການຂຽນ. ຂໍ້ມູນການທົດສອບແມ່ນການປ້ອນຂໍ້ມູນພຽງແຕ່ສໍາລັບການທໍາງານນີ້. ໃນຫນ້າທີ່ນີ້, ພວກເຮົາພຽງແຕ່ປຽບທຽບຜົນໄດ້ຮັບຂອງເຄືອຂ່າຍກັບຜົນໄດ້ຮັບທີ່ຄາດໄວ້, y. ໂດຍການໃຫ້ອາຫານປ້ອນຂໍ້ມູນ, x, ສົ່ງຕໍ່, ຜົນໄດ້ຮັບຂອງເຄືອຂ່າຍແມ່ນຖືກກໍານົດ.
ລະຫັດຄົບຖ້ວນ
ເມື່ອພວກເຮົາລວມລະຫັດທັງຫມົດ, ນີ້ແມ່ນວິທີທີ່ມັນປາກົດ.
ການທົດສອບເຄືອຂ່າຍ Neural
ກຳລັງໂຫຼດຂໍ້ມູນ MNIST
ໄດ້ ຂໍ້ມູນ MNIST ແມ່ນຢູ່ໃນຮູບແບບ .pkl.gz, ເຊິ່ງພວກເຮົາຈະເປີດໂດຍໃຊ້ GZIP ແລະໂຫຼດດ້ວຍດອງ. ໃຫ້ພວກເຮົາຂຽນວິທີການໄວໃນການໂຫຼດຂໍ້ມູນນີ້ເປັນ tuple ຂອງຂະຫນາດສາມ, ແບ່ງອອກເປັນການຝຶກອົບຮົມ, ການກວດສອບ, ແລະຂໍ້ມູນການທົດສອບ.
ເພື່ອເຮັດໃຫ້ຂໍ້ມູນຂອງພວກເຮົາງ່າຍຕໍ່ການຈັດການ, ພວກເຮົາຈະຂຽນຟັງຊັນອື່ນເພື່ອເຂົ້າລະຫັດ y ເຂົ້າໄປໃນອາເຣ 10 ລາຍການ. array ຈະເປັນ 0s ທັງໝົດຍົກເວັ້ນ 1 ທີ່ກົງກັບຕົວເລກທີ່ຖືກຕ້ອງຂອງຮູບ.
ພວກເຮົາຈະໃຊ້ຂໍ້ມູນການໂຫຼດພື້ນຖານ ແລະວິທີການເຂົ້າລະຫັດຮ້ອນເພື່ອໂຫລດຂໍ້ມູນຂອງພວກເຮົາໃຫ້ເປັນຮູບແບບທີ່ສາມາດອ່ານໄດ້. ຟັງຊັນອື່ນຈະຖືກຂຽນທີ່ຈະປ່ຽນຄ່າ x ຂອງພວກເຮົາເຂົ້າໄປໃນບັນຊີລາຍຊື່ຂອງຂະຫນາດ 784, ກົງກັບ 784 pixels ຂອງຮູບພາບ, ແລະຄ່າ y ຂອງພວກເຮົາເຂົ້າໄປໃນຮູບແບບ vector encoded ຮ້ອນດຽວ.
ຫຼັງຈາກນັ້ນ, ພວກເຮົາຈະລວມຄ່າ x ແລະ y ເຊັ່ນວ່າດັດຊະນີຫນຶ່ງກົງກັບອີກອັນຫນຶ່ງ. ນີ້ໃຊ້ກັບຊຸດຂໍ້ມູນການຝຶກອົບຮົມ, ການກວດສອບ, ແລະການທົດສອບ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາສົ່ງຄືນຂໍ້ມູນທີ່ປ່ຽນແປງ.
ແລ່ນທົດສອບ
ພວກເຮົາຈະສ້າງໄຟລ໌ໃຫມ່ທີ່ເອີ້ນວ່າ "mnist loader" ທີ່ຈະນໍາເຂົ້າທັງສອງເຄືອຂ່າຍ neural ທີ່ພວກເຮົາສ້າງຕັ້ງຂຶ້ນກ່ອນຫນ້ານີ້ (n ງ່າຍດາຍ) ແລະ MNIST data set loader ກ່ອນທີ່ພວກເຮົາຈະເລີ່ມຕົ້ນການທົດສອບ.
ໃນໄຟລ໌ນີ້, ທັງຫມົດທີ່ພວກເຮົາຕ້ອງເຮັດຄືການນໍາເຂົ້າຂໍ້ມູນ, ສ້າງເຄືອຂ່າຍທີ່ມີຂະຫນາດຊັ້ນນໍາເຂົ້າຂອງ 784 ແລະຂະຫນາດຊັ້ນຜົນຜະລິດຂອງ 10, ດໍາເນີນການຟັງຊັນ SGD ຂອງເຄືອຂ່າຍໃນຂໍ້ມູນການຝຶກອົບຮົມ, ຫຼັງຈາກນັ້ນທົດສອບໂດຍໃຊ້ຂໍ້ມູນການທົດສອບ.
ຈົ່ງຈື່ໄວ້ວ່າສໍາລັບບັນຊີລາຍຊື່ຂອງຊັ້ນຂໍ້ມູນຂອງພວກເຮົາ, ມັນບໍ່ມີຄວາມແຕກຕ່າງກັນວ່າຕົວເລກໃດຢູ່ລະຫວ່າງ 784 ແລະ 10. ພວກເຮົາສາມາດປ່ຽນຊັ້ນອື່ນໆໃນແບບທີ່ພວກເຮົາມັກ; ພຽງແຕ່ການປ້ອນຂໍ້ມູນແລະຂະຫນາດຜົນຜະລິດແມ່ນມີການສ້ອມແຊມ.
ສາມຊັ້ນແມ່ນບໍ່ຈໍາເປັນ; ພວກເຮົາອາດຈະໃຊ້ສີ່, ຫ້າ, ຫຼືແມ້ກະທັ້ງພຽງແຕ່ສອງ. ມ່ວນກັບການທົດລອງກັບມັນ.
ສະຫຼຸບ
ທີ່ນີ້, ການນໍາໃຊ້ Python 3, ພວກເຮົາສ້າງເຄືອຂ່າຍ neural ຈາກ scratch. ຄຽງຄູ່ກັບຄະນິດສາດລະດັບສູງ, ພວກເຮົາຍັງໄດ້ປຶກສາຫາລືສະເພາະຂອງການຈັດຕັ້ງປະຕິບັດ.
ພວກເຮົາເລີ່ມຕົ້ນໂດຍການປະຕິບັດຫນ້າທີ່ຜູ້ຊ່ວຍ. ສໍາລັບ neurons ເຮັດວຽກ, sigmoid ແລະ sigmoid ຫນ້າທີ່ຕົ້ນຕໍແມ່ນສໍາຄັນ. ຫຼັງຈາກນັ້ນ, ພວກເຮົາປະຕິບັດຫນ້າທີ່ feedforward, ເຊິ່ງເປັນຂະບວນການພື້ນຖານສໍາລັບການປ້ອນຂໍ້ມູນເຂົ້າໄປໃນເຄືອຂ່າຍ neural.
ຕໍ່ໄປ, ພວກເຮົາສ້າງຫນ້າທີ່ gradient descent ໃນ Python, ເຄື່ອງຈັກທີ່ຂັບເຄື່ອນເຄືອຂ່າຍ neural ຂອງພວກເຮົາ. ເພື່ອຊອກຫາ "minima ທ້ອງຖິ່ນ" ແລະເພີ່ມປະສິດທິພາບນ້ໍາຫນັກແລະຄວາມລໍາອຽງຂອງພວກເຂົາ, ເຄືອຂ່າຍ neural ຂອງພວກເຮົາໃຊ້ gradient descent. ພວກເຮົາສ້າງການທໍາງານຂອງ backpropagation ໂດຍໃຊ້ ການສືບເຊື້ອສາຍ gradient.
ໂດຍການສົ່ງການອັບເດດເມື່ອຜົນໄດ້ຮັບບໍ່ກົງກັບປ້າຍຊື່ທີ່ເຫມາະສົມ, ຟັງຊັນນີ້ເຮັດໃຫ້ເຄືອຂ່າຍ neural "ຮຽນຮູ້."
ສຸດທ້າຍ, ພວກເຮົາເອົາ Python ໃຫມ່ຂອງພວກເຮົາ ເຄືອຂ່າຍ neural ເພື່ອທົດສອບໂດຍໃຊ້ຊຸດຂໍ້ມູນ MNIST. ທຸກສິ່ງທຸກຢ່າງໄດ້ເຮັດວຽກຢ່າງລຽບງ່າຍ.
ສະບາຍດີລະຫັດ!
ອອກຈາກ Reply ເປັນ