Pro přeškolení end-to-end systémů pro mimiku
Příloha 1:
Analýza zdrojového kódu Darknet Deep Learning Framework: Podrobný čínský komentář, pokrývající principy frameworku a analýzu syntaxe implementace
https://github.com/hgpvision/darknet
darknet je relativně lehký open source framework pro hluboké učení založený výhradně na C a CUDA, jeho hlavní funkce jsou snadné na instalaci, bez závislostí (OpenCV lze použít), velmi přenosný a podporuje jak CPU, tak GPU výpočetní metody.
Ve srovnání s TensorFlow není darknet tak silný, ale to je také výhoda darknetu:
- Darknet je kompletně implementován v jazyce C, bez jakýchkoli závislostí, samozřejmě můžete použít OpenCV, ale pouze k zobrazení obrázků pro lepší vizualizaci;
- darknet podporuje CPU (takže nezáleží na tom, jestli GPU nemáš) a GPU (CUDA/cuDNN, samozřejmě je lepší používat GPU);
- Právě proto, že je relativně lehký a nemá tak silné API jako TensorFlow, mám pocit, že má další formu flexibility, která je vhodná pro studium základu a lze ji od základu pohodlněji vylepšit a rozšířit.
- Existují podobnosti mezi implementací darknetu a implementací caffe, a s darknetem jsem obeznámen a věřím, že je užitečné začít s caffe.
Příloha 2:
Autor: Zhihu User Propojit:https://www.zhihu.com/question/51747665/answer/145607615 Zdroj: Zhihu Autorská práva patří autorovi. Pro komerční dotisky kontaktujte autora pro autorizaci, a pro nekomerční dotisky prosím uveďte zdroj.
Tři nejdůležitější definice struktur v Darknetu jsou network_state, síť a vrstva; Nová verze network_state byla integrována do sítě.
Kód může nejprve ignorovat část GPU a různé typy síťových vrstev definují pravidla vykonávání tohoto typu prostřednictvím ukazatelů funkcí směrem dopředu a zpět a aktualizací ve vrstvě. Například existují tři metody pro propojené vrstvy, například forward_connected_layer backward_connected_layer update_connected_layer vrstva gru atd.;
Atomické operace jsou pouze v blas.c a gemm.c, síťové operace v network.c a nejdůležitější jsou train_network_datum, train_networks, train_network_batch a network_predict;
train_network_datum je float_pair používaná pro vstupní data, tedy pro páry float *x a float *y;
train_networks je trénován v network_kernel.cu v režimu souběžného vláknění a parametrem jsou data;
Jedna věc, darknet je jednovláknový v režimu CPU a v režimu multi-GPU train_networks podporuje běh na více kartách, což je také vstup do transformace distribuční multi-host darknetové operace, kde vidíte slučování a škálování naučených váhových dat.
train_network_datum Provést forward_network { vrstvově forward network } backward_network { vrstvově reverzní síť } a provést update_network ( ,,, rychlost, hybnost a pokles pod počtem (*net.seen %poddělení) je splněno;
Pro zpracování uživatelsky definovaných síťových profilů v parse_network_cfg jsou výsledky tréninku čteny load_weights
To je ta páteř.
Pokud potřebujete pracovat se zdroji dat se speciálními potřebami, musíte začít na data.c.
Pro CFG profil je nastavení zaostření (samozřejmě všechny parametry jsou důležité a může být třeba je upravit) a globální parametr zaostření během tréninku: hybnost poklesu learning_rate Tyto tři souvisí s rychlostí konvergence. Politika je politika váh, výstupy vstupů dávkových (a souvisejících dělení) souvisejí s dimenzí propustnosti dat a nejnovější verze zde v výstupech obsahuje opravy.
|