Veido išraiškų sistemų perkvalifikavimui
1 priedėlis:
"Darknet" gilaus mokymosi sistemos šaltinio kodo analizė: išsamus kinų kalbos komentaras, apimantis sistemos principus ir įgyvendinimo sintaksės analizę
https://github.com/hgpvision/darknet
darknet yra palyginti lengva atvirojo kodo gilaus mokymosi sistema, pagrįsta tik C ir CUDA, jos pagrindines funkcijas lengva įdiegti, nėra priklausomybių (galima naudoti OpenCV), labai nešiojama ir palaiko tiek CPU, tiek GPU skaičiavimo metodus.
Palyginti su "TensorFlow", tamsusis tinklas nėra toks galingas, tačiau tai taip pat yra tamsaus tinklo pranašumas:
- tamsusis tinklas yra visiškai įdiegtas C kalba, be jokių priklausomybių, žinoma, galite naudoti OpenCV, bet naudoti jį tik vaizdams rodyti, kad būtų geriau vizualizuota;
- darknet palaiko CPU (taigi nesvarbu, jei neturite GPU) ir GPU (CUDA/cuDNN, žinoma, geriau naudoti GPU);
- Būtent todėl, kad jis yra gana lengvas ir neturi galingos API, tokios kaip "TensorFlow", todėl manau, kad jis turi kitą lankstumo skonį, kuris tinka pagrindiniam tyrimui ir gali būti patogiau patobulintas bei išplėstas iš apačios.
- Yra panašumų tarp darknet ir caffe įgyvendinimo, ir aš esu susipažinęs su darknet ir manau, kad tai naudinga pradėti su caffe.
2 priedėlis:
Autorius: Zhihu Vartotojas Saitas:https://www.zhihu.com/question/51747665/answer/145607615 Šaltinis: Zhihu Autorių teisės priklauso autoriui. Dėl komercinių perspausdinimų kreipkitės į autorių dėl leidimo, o dėl nekomercinių perspausdinimų nurodykite šaltinį.
Trys svarbiausi "Darknet" struktūros apibrėžimai yra network_state, tinklas ir sluoksnis; Nauja network_state versija buvo integruota į tinklą.
Kodas pirmiausia gali nepaisyti GPU dalies, o skirtingų tipų tinklo sluoksniai apibrėžia šio tipo vykdymo taisykles per funkcijų rodykles pirmyn atgal ir atnaujinamos sluoksnyje. Pavyzdžiui, yra trys sujungtų sluoksnių metodai, tokie kaip forward_connected_layer backward_connected_layer update_connected_layer gru sluoksnis ir kt.;
Atominės operacijos yra tik blas.c ir gemm.c, tinklo operacijos yra network.c, o svarbiausios yra train_network_datum, train_networks, train_network_batch ir network_predict;
train_network_datum yra float_pair, naudojama įvesties duomenims, tai yra, plūduriuojančioms *x ir plūduriuojančioms *y poroms;
train_networks yra apmokytas network_kernel.cu vienu metu gijų režimu, o parametras yra duomenys;
Vienas taškas, tamsusis tinklas yra vienos gijos procesoriaus režimu, o kelių GPU grafikos režimu jis train_networks palaiko kelių kortelių veikimą, ir tai taip pat yra įėjimas į platinimo kelių kompiuterių tamsaus tinklo operaciją, kur galite pamatyti apmokytų svorio duomenų sujungimą ir mastelį.
train_network_datum Vykdyti forward_network { layerwise forward network } backward_network { layerwise reverse network } ir vykdyti update_network ( ,,, greitis, impulsas, skilimas pagal kartų skaičių (*net.seen %subdivisions) yra patenkintas;
Apdorojant vartotojo nustatytą tinklo profilį parse_network_cfg, mokymo rezultatai nuskaitomi per load_weights
Tai yra stuburas.
Jei jums reikia dirbti su duomenų šaltiniais, turinčiais specialių poreikių, turite kreiptis į data.c, kad pradėtumėte.
CFG profiliui fokusavimo reguliavimas (žinoma, visi parametrai yra svarbūs, gali tekti koreguoti) ir bendras fokusavimo parametras treniruotės metu: skilimo impulsas learning_rate Šie trys yra susiję su konvergencijos greičiu. politika yra svorių politika, įvesties partijos (ir susijusių poskyrių) išėjimai yra susiję su duomenų pralaidumo dimensija, o naujausia versija atrodo pataisyta čia.
|