Na preškolenie end-to-end systémov pre mimiku
Príloha 1:
Analýza zdrojového kódu Darknet Deep Learning Framework: Podrobný čínsky komentár, pokrývajúci princípy rámca a analýzu syntaxe implementácie
https://github.com/hgpvision/darknet
darknet je relatívne ľahký open source framework pre hlboké učenie založený výlučne na C a CUDA, jeho hlavné funkcie sú jednoduché na inštaláciu, bez závislostí (OpenCV je možné použiť), veľmi prenosný a podporuje výpočtové metódy CPU aj GPU.
V porovnaní s TensorFlow nie je darknet až taký silný, ale aj to je výhoda darknetu:
- darknet je úplne implementovaný v jazyku C, bez akýchkoľvek závislostí, samozrejme môžete použiť OpenCV, ale len na zobrazovanie obrázkov pre lepšiu vizualizáciu;
- darknet podporuje CPU (takže nezáleží na tom, či nemáte GPU) a GPU (CUDA/cuDNN, samozrejme je lepšie používať GPU);
- Práve preto, že je relatívne ľahký a nemá výkonné API ako TensorFlow, mám pocit, že má aj inú formu flexibility, ktorá je vhodná na štúdium základu a dá sa pohodlnejšie vylepšiť a rozšíriť zdola.
- Existujú podobnosti medzi implementáciou darknetu a implementáciou caffe, a som oboznámený s darknetom a verím, že je užitočné začať s caffe.
Príloha 2:
Autor: Zhihu User Väzba:https://www.zhihu.com/question/51747665/answer/145607615 Zdroj: Zhihu Autorské práva patria autorovi. Pri komerčných reprintoch kontaktujte autora pre povolenie a pri nekomerčných reprintoch uveďte zdroj.
Tri najdôležitejšie definície štruktúr v Darknete sú network_state, sieť a vrstva; Nová verzia network_state bola integrovaná do siete.
Kód môže najskôr ignorovať časť GPU a rôzne typy sieťových vrstiev definujú vykonávacie pravidlá tohto typu prostredníctvom ukazovateľov funkcií dopredu a späť a aktualizácie vo vrstve. Napríklad existujú tri metódy pre prepojené vrstvy, ako napríklad forward_connected_layer backward_connected_layer update_connected_layer vrstva gru a podobne;
Atómové operácie sú len v blas.c a gemm.c, sieťové operácie v network.c a najdôležitejšie sú train_network_datum, train_networks, train_network_batch a network_predict;
train_network_datum je float_pair používaný pre vstupné dáta, teda float *x a float *y páry;
train_networks je trénovaný v network_kernel.cu v režime súbežného vlákna a parametrom sú dáta;
Jedna vec, darknet je single-threaded v režime CPU a v režime multi-GPU grafiky train_networks podporuje beh na viacerých kartách, a to je tiež vstup na transformáciu distribučnej multi-hostiteľskej darknetovej operácie, kde môžete vidieť zlučovanie a škálovanie trénovaných váhových dát.
train_network_datum Vykonajte forward_network { vrstvová forward network } backward_network { vrstvová reverzná sieť } a vykonajte update_network ( ,,, rýchlosť, hybnosť, pokles pod počtom (*net.seen %subdivisions) je splnený;
Pri spracovaní používateľsky definovaných sieťových profilov v parse_network_cfg sa výsledky tréningu čítajú load_weights
To je chrbtica.
Ak potrebujete pracovať so zdrojmi dát so špeciálnymi potrebami, mali by ste začať na data.c.
Pre profil CFG je nastavenie zaostrenia (samozrejme, všetky parametre sú dôležité, môže ich byť potrebné upraviť) a globálny parameter zaostrenia počas tréningu: hybnosť úbytku learning_rate Tieto tri súvisia s rýchlosťou konvergencie. Politika je politika váh, výstupy Inputs batch (a súvisiace rozdelenia) súvisia s dimenziou priepustnosti dát a najnovšia verzia sa zdá, že obsahuje opravy tu v outouts.
|