Для переобучения сквозных систем для мимики
Приложение 1:
Анализ исходного кода Darknet Deep Learning Framework: подробный китайский комментарий, охватывающий принципы фреймворка и анализ синтаксиса реализации.
https://github.com/hgpvision/darknet
Darknet — это относительно лёгкий фреймворк с открытым исходным кодом, полностью основанный на C и CUDA, его основные функции — простота установки, отсутствие зависимостей (можно использовать OpenCV), очень портативная технология и поддержка методов вычислений как на CPU, так и на GPU.
По сравнению с TensorFlow, даркнет не так уж мощен, но это также его преимущество:
- darknet полностью реализован на языке C, без каких-либо зависимостей, конечно, можно использовать OpenCV, но использовать его только для отображения изображений для лучшей визуализации;
- Darknet поддерживает процессор (так что неважно, нет ли у вас видеокарты) и GPU (CUDA/cuDNN, конечно, лучше использовать GPU);
- Это именно потому, что он относительно лёгкий и не имеет мощного API, как TensorFlow, поэтому я считаю, что у него есть ещё один вид гибкости, подходящий для изучения базовых компонентов и который может быть удобнее улучшен и расширен снизу.
- Есть сходства между внедрением даркнета и Caffe, и я знаком с даркнетом и считаю, что полезно начать с кофеины.
Приложение 2:
Автор: пользователь Чжиху Связь:https://www.zhihu.com/question/51747665/answer/145607615 Источник: Чжиху Авторские права принадлежат автору. Для коммерческих переизданий обращайтесь к автору для получения разрешения, а для некоммерческих переизданий указывайте источник.
Три самых важных определения структур в даркнете — это 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.
|