Проинициализирует ли OpenCV матрицу весов с нулями, cv :: ml :: ANN_MLP

Это упомянуто на документах OpenCV Вот

Искусственные нейронные сети — многослойные персептроны.

В отличие от многих других моделей в ML, которые построены и обучены в
однажды в модели MLP эти шаги разделены. Во-первых, сеть
с указанной топологией создается не по умолчанию
конструктор или метод ANN_MLP :: create. Все веса установлены
в нули.
Затем сеть обучается с использованием набора ввода и
выходные векторы. Процедура тренировки может повторяться более одного раза,
то есть веса могут быть скорректированы на основе новых данных обучения.

А также упоминается:

UPDATE_WEIGHTS

Обновляйте веса сети, а не вычисляйте их с нуля.
В последнем случае веса инициализируются с использованием алгоритма Нгуена-Видроу.

Поэтому я хотел знать, что именно происходит с инициализацией веса, когда я иду на тренировку модели. Ответы, связанные с OpenCV 3.3.1, также приветствуются

0

Решение

Есть ли у вас основания сомневаться в документации? OpenCV — это библиотека с открытым исходным кодом, так что вы можете сами увидеть, что под ней Вот

ANN_MLPImpl()
{
clear();
setActivationFunction( SIGMOID_SYM, 0, 0);
setLayerSizes(Mat());
setTrainMethod(ANN_MLP::RPROP, 0.1, FLT_EPSILON);
}

Когда вы звоните train init_weights() можно назвать

bool train( const Ptr<TrainData>& trainData, int flags )
{
// Some code
// ... and link weights
if( !(flags & UPDATE_WEIGHTS) )
init_weights();
// Even more code

И вот init_weights()

void init_weights()
{
//... More code
// initialize weights using Nguyen-Widrow algorithm
for( j = 0; j < n2; j++ )
{
double s = 0;
// .. more initialization code
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]