Do ponownego trenowania systemów end-to-end dla mimiki
Załącznik 1:
Analiza kodu źródłowego Darknet Deep Learning Framework: Szczegółowy komentarz chiński, obejmujący zasady frameworka i analizę składni implementacyjnej
https://github.com/hgpvision/darknet
darknet to stosunkowo lekki, otwartoźródłowy framework deep learning, oparty całkowicie na C i CUDA, jego główne funkcje są łatwe w instalacji, brak zależności (można użyć OpenCV), bardzo przenośny i obsługuje zarówno metody obliczeniowe CPU, jak i GPU.
W porównaniu do TensorFlow, darknet nie jest zbyt potężny, ale to również zaleta darknetu:
- darknet jest całkowicie zaimplementowany w języku C, bez żadnych zależności, oczywiście można używać OpenCV, ale tylko do wyświetlania obrazów, dla lepszej wizualizacji;
- darknet obsługuje CPU (więc nie ma znaczenia, czy nie masz GPU) i GPU (CUDA/cuDNN, oczywiście lepiej używać GPU);
- To właśnie dlatego, że jest stosunkowo lekki i nie posiada potężnego API takiego jak TensorFlow, więc uważam, że ma inny rodzaj elastyczności, który nadaje się do badania podstaw i można go wygodniej ulepszać i rozszerzać od podstaw.
- Istnieją podobieństwa między wdrożeniem darknetu a wdrożeniem caffe, a ja znam darknet i uważam, że warto zacząć od caffe.
Załącznik 2:
Autor: Użytkownik Zhihu Łącze:https://www.zhihu.com/question/51747665/answer/145607615 Źródło: Zhihu Prawa autorskie należą do autora. W przypadku komercyjnych przedruków prosimy o kontakt z autorem w celu uzyskania autorstwa, a w przypadku niekomercyjnych przedruków prosimy o podanie źródła.
Trzy najważniejsze definicje struktur w Darknecie to network_state, sieć i warstwa; Nowa wersja network_state została zintegrowana z siecią.
Kod może najpierw zignorować część GPU, a różne typy warstw sieciowych definiują reguły wykonania tego typu poprzez wskaźniki funkcji do przodu i wstecz oraz aktualizacje na warstwie. Na przykład istnieją trzy metody dla warstw połączonych, takie jak forward_connected_layer backward_connected_layer update_connected_layer warstwa gru itd.;
Operacje atomowe są dostępne tylko w blas.c i gemm.c, operacje sieciowe w network.c, a najważniejsze to train_network_datum, train_networks, train_network_batch i network_predict;
train_network_datum to float_pair używany do danych wejściowych, czyli par float *x i float *y;
train_networks jest trenowany w network_kernel.cu w trybie współbieżnego wątkowania, a parametrem są dane;
Po pierwsze, darknet jest jednowątkowy w trybie CPU, a w trybie grafiki multi-GPU train_networks obsługuje uruchamianie wielu kart, a to także wejście do transformacji dystrybucji multi-host darknet, gdzie można zobaczyć scalanie i skalowanie wytrenowanych danych wagowych.
train_network_datum Wykonaj forward_network { warstwowo forward network } backward_network { warstwowo odwrócona sieć } i wykonaj update_network (,,, szybkość, pęd, spadek względem liczby podziałów (*net.seen %podziałów) jest spełniony;
Dla przetwarzania profilu sieciowego zdefiniowanego przez użytkownika w parse_network_cfg wyniki treningu są odczytywane przez load_weights
To jest kręgosłup.
Jeśli musisz radzić sobie ze źródłami danych o specjalnych potrzebach, musisz zacząć na data.c.
Dla profilu CFG regulacja ostrości (oczywiście wszystkie parametry są istotne, mogą wymagać regulacji) oraz globalny parametr ogniska podczas treningu: pęd zaniku learning_rate Te trzy są powiązane z prędkością zbieżności. Polityka to polityka wag, wejścia partiowe (i powiązane podziały) są powiązane z wymiarem przepustowości danych, a najnowsza wersja wydaje się zawierać poprawki w wyprowadzkach.
|