Näoilmete otsast lõpuni süsteemide ümberõpetamiseks
Lisa 1:
Darknet Deep Learning Framework lähtekoodi analüüs: Põhjalik hiina kommentaar, mis käsitleb raamistiku põhimõtteid ja rakendussüntaksi analüüsi
https://github.com/hgpvision/darknet
darknet on suhteliselt kerge avatud lähtekoodiga süvaõppe raamistik, mis põhineb täielikult C ja CUDA-l, selle peamised funktsioonid on lihtsad paigaldada, puuduvad sõltuvused (OpenCV on kasutatav), väga kaasaskantav ning toetab nii CPU kui GPU arvutusmeetodeid.
Võrreldes TensorFlow'ga pole darknet eriti võimas, kuid see on samuti darkneti eelis:
- darknet on täielikult rakendatud C keeles, ilma sõltuvusteta, muidugi saab kasutada OpenCV-d, aga ainult piltide kuvamiseks, et paremini visualiseerida;
- darknet toetab CPU-d (nii et pole vahet, kui sul pole GPU-d) ja GPU-d (CUDA/cuDNN, muidugi on parem kasutada GPU-d);
- See on just sellepärast, et see on suhteliselt kerge ega oma võimsat API-d nagu TensorFlow, seega tunnen, et sellel on veel üks paindlikkus, mis sobib aluseks olevate asjade uurimiseks ja mida saab altpoolt mugavamalt täiustada ja laiendada.
- Darkneti ja caffe rakendamise vahel on sarnasusi ning olen darknetiga tuttav ja usun, et on kasulik alustada caffe'ga.
Lisa 2:
Autor: Zhihu User Link:https://www.zhihu.com/question/51747665/answer/145607615 Allikas: Zhihu Autoriõigus kuulub autorile. Äriliste kordustrükkide puhul palun pöörduge autori poole autoriga autori jaoks ning mittetulunduslike kordustrükkide puhul palun märgike allikas.
Darkneti kolm kõige olulisemat struktuuri definitsiooni on network_state, võrk ja kiht; Uus versioon network_state on integreeritud võrku.
Kood võib esmalt GPU osa ignoreerida ning erinevad võrgukihid määravad selle tüübi täitmisreeglid funktsiooni osutajate kaudu edasi ja uuendavad kihis. Näiteks on ühendatud kihtide jaoks kolm meetodit, näiteks forward_connected_layer backward_connected_layer update_connected_layer gru-kiht jne;
Aatomioperatsioonid on ainult blas.c ja gemm.c süsteemides, võrguoperatsioonid network.c-s ning kõige olulisemad on train_network_datum, train_networks, train_network_batch ja network_predict;
train_network_datum on float_pair, mida kasutatakse sisendandmete jaoks, st ujuv *x ja ujuv *y paarid;
train_networks on treenitud network_kernel.cu-s samaaegses lõimimisrežiimis ning parameeter on andmed;
Üks punkt, darknet on CPU režiimis ühe lõimega, ja mitme GPU graafikarežiimis toetab see train_networks mitme kaardi jooksutamist ning see on ka sissepääs distributsiooni mitme hostiga darkneti operatsiooni transformeerimiseks, kus näed treenitud kaalu andmete sulandumist ja skaleerumist.
train_network_datum Täida forward_network { kihiline edasiliikuv võrk } backward_network { kihiti pöördvõrk } ja täida update_network ( ,,, kiirus, impulss, kahanemine vastavalt kordade arvule (*net.seen %subdivisions) on täidetud;
Kasutaja määratletud võrguprofiili töötlemiseks parse_network_cfg-s loetakse treeningtulemused load_weights
See ongi selgroog.
Kui vajad erivajadustega andmeallikaid, pead alustamiseks pöörduma data.c lehele.
CFG profiili puhul on fookuse korrigeerimine (muidugi on kõik parameetrid olulised, võib vajada kohandamist) ja fookuse globaalset parameetrit treeningu ajal: kahanemisimpulss learning_rate Need kolm on seotud konvergentsikiirusega. Poliitika on kaalupoliitika, sisendpartiid (ja seotud alajaotused) ouputid on seotud andmete läbilaskevõime dimensiooniga ning viimases versioonis näib olevat siin ouputides parandusi.
|