Обучение нейросети Fann, рандомные результаты при разных запусках обучения
Есть такая проблема с обученим нейросети Fann http://leenissen.dk/ Использую биндинг в php http://pecl.php.net/package/fann
генерирую обучающие данные, запускаю обучение, запускаю тест выдает одни результаты далее запускаю обучение еще раз (на тех же обучающих данных), запускаю тест выдает другие результаты потом еще другие
результат конечно стремится к тому который нужен, т.е. в большинстве случаев тест на неверных данных выдает значения близкие к -1
но сами результаты очень рандомные от каждого запуска обучения сети.
UP: сейчас код обучения выглядит так:
function fannTrane($trainFile, $saveTo)
{
$num_input = 900;
//$num_input = 2;
$num_output = 1;
//$num_output = 1;
$num_layers = 3;
$num_neurons_hidden = 100;
$desired_error = 0;
$max_epochs = 1000;
$epochs_between_reports = 10;
//generateTrainFile();die;
$ann = fann_create_standard($num_layers, $num_input, $num_neurons_hidden, $num_output);
//fann_randomize_weights($ann, -0.1, 0.1);
if ($ann) {
fann_set_learning_rate($ann, 0.7);
fann_set_activation_steepness_hidden($ann, 1.0);
fann_set_activation_steepness_output($ann, 1.0);
fann_set_activation_function_hidden($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_activation_function_output($ann, FANN_SIGMOID_SYMMETRIC);
fann_set_bit_fail_limit($ann, 0.01);
fann_set_train_stop_function($ann, FANN_STOPFUNC_BIT);
fann_set_training_algorithm($ann, FANN_TRAIN_INCREMENTAL);
$filename = $trainFile;
if (fann_train_on_file($ann, $filename, $max_epochs, $epochs_between_reports, $desired_error)) {
fann_save($ann, $saveTo);
}
fann_destroy($ann);
echo "Done\n";
} else {
echo "Error\n";
}
}
Результаты запуска тестов выдаются от абсолютно правильных http://joxi.ru/SRoXVP3JTJAsXcvP1mo (первый квадрат это данные которые должны быть верны) второй которые не верны
до весьма кривых http://joxi.ru/qBoXVIwyTJDSAjgG38w
причем то что во втором квадрате (неверные данные), сеть все время показывает верно, т.е. эти данные не верны.
а вот то что в первом где -то 1/10 10 запусков обучения правильно, 1 неверно
почему такой рандомный результат на одних и тех же данных, что здесь вносит рандомность ?