Для перенавчання наскрізних систем для міміки
Додаток 1:
Аналіз вихідного коду Darknet Deep Learning Framework: детальний китайський коментар, що охоплює принципи фреймворку та аналіз синтаксису реалізації
https://github.com/hgpvision/darknet
Darknet — це відносно легкий фреймворк з відкритим кодом, заснований повністю на C та CUDA, його основні функції — простота встановлення, відсутність залежностей (можна використовувати OpenCV), дуже портативний і підтримує як CPU, так і GPU-методи обчислення.
Порівняно з TensorFlow, даркнет не надто потужний, але це також його перевага:
- darknet повністю реалізований мовою C, без жодних залежностей, звісно, можна використовувати OpenCV, але використовувати його лише для відображення зображень для кращої візуалізації;
- Darknet підтримує процесор (тож неважливо, якщо у вас немає GPU) та GPU (CUDA/cuDNN, звісно, краще використовувати GPU);
- Саме тому, що він відносно легкий і не має потужного API, як у TensorFlow, тому я вважаю, що він має інший тип гнучкості, який підходить для вивчення базової структури і може зручніше покращуватися та розширюватися знизу.
- Існують схожості між впровадженням даркнету та впровадженням caffe, і я знайомий із даркнетом і вважаю, що починати з caffe корисно.
Додаток 2:
Автор: користувач Zhihu Посилання:https://www.zhihu.com/question/51747665/answer/145607615 Джерело: Zhihu Авторське право належить автору. Для комерційних перевидань, будь ласка, звертайтеся до автора для отримання дозволу, а для некомерційних перевидань — вкажіть джерело.
Три найважливіші визначення структур у даркнеті — це network_state, мережа та шар; Нова версія network_state інтегрована в мережу.
Код може спочатку ігнорувати частину GPU, а різні типи мережевих шарів визначають правила виконання цього типу через функціонерні вказівники вперед і оновлення на рівні. Наприклад, існує три методи для зв'язних шарів, таких як forward_connected_layer backward_connected_layer update_connected_layer gru шар тощо;
Атомарні операції виконуються лише в blas.c та gemm.c, мережеві операції — у network.c, а найважливішими є train_network_datum, train_networks, train_network_batch та network_predict;
train_network_datum — це float_pair, що використовується для вхідних даних, тобто пар float *x і float *y;
train_networks навчається в network_kernel.cu в режимі паралельного потокування, а параметром є дані;
Один із моментів: даркнет є однопохідним у режимі процесора, а в режимі мульти-графічної карти він train_networks підтримує багатокартний запуск, і це також є входом до трансформації роботи розподілу мультихостової даркнету, де можна бачити, як треновані дані ваги зливаються та масштабуються.
train_network_datum Виконати forward_network { рівневу передню мережу } backward_network { шарову зворотну мережу } і виконати update_network ( ,,, швидкість, імпульс, спад за кількістю разів (*net.seen %subdivisions) виконується;
Для обробки мережевих профілів, визначених користувачем, у parse_network_cfg результати навчання зчитуються через load_weights
Ось це і є основа опори.
Якщо вам потрібно мати справу з джерелами даних з особливими потребами, потрібно звернутися до data.c, щоб почати.
Для профілю CFG корекція фокусу (звісно, всі параметри важливі, їх може потребувати коригування) та глобальний параметр фокусу під час тренування: імпульс затухання learning_rate Ці три пов'язані зі швидкістю збіжності. Політика — це політика ваг, вхідні дані — пакетні (та пов'язані підрозділи) OUPUT пов'язані з виміром пропускної здатності даних, а остання версія, здається, має виправлення в OUPUT.
|