Обучение нейросети Fann, рандомные результаты при разных запусках обучения

Рейтинг: 0Ответов: 0Опубликовано: 15.09.2014

Есть такая проблема с обученим нейросети 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 неверно

почему такой рандомный результат на одних и тех же данных, что здесь вносит рандомность ?

Ответы

Ответов пока нет.