Example #1
0
void NeuralNetworkTest::test_get_multilayer_perceptron_pointer(void) {
  message += "test_get_multilayer_perceptron_pointer\n";

  NeuralNetwork nn;

  // Test

  nn.set(1, 1);
  assert_true(nn.get_multilayer_perceptron_pointer() != NULL, LOG);
}
void GoldenSectionOrderTest::test_perform_order_selection(void)
{
    message += "test_perform_order_selection\n";

    std::string str;
    Matrix<double> data;

    Vector<Instances::Use> uses;

    NeuralNetwork nn;

    DataSet ds;

    PerformanceFunctional pf(&nn, &ds);

    TrainingStrategy ts(&pf);

    GoldenSectionOrder gs(&ts);

    GoldenSectionOrder::GoldenSectionOrderResults* results;

    // Test

    str =
            "-1 0\n"
            "-0.9 0\n"
            "-0.8 0\n"
            "-0.7 0\n"
            "-0.6 0\n"
            "-0.5 0\n"
            "-0.4 0\n"
            "-0.3 0\n"
            "-0.2 0\n"
            "-0.1 0\n"
            "0.0 0\n"
            "0.1 0\n"
            "0.2 0\n"
            "0.3 0\n"
            "0.4 0\n"
            "0.5 0\n"
            "0.6 0\n"
            "0.7 0\n"
            "0.8 0\n"
            "0.9 0\n"
            "1 0\n";

    data.parse(str);
    ds.set(data);

    uses.set(21,Instances::Training);
    for (size_t i = 0; i < 11; i++)
        uses[2*i+1] = Instances::Generalization;

    ds.get_instances_pointer()->set_uses(uses);

    nn.set(1,3,1);
    nn.initialize_parameters(0.0);

    pf.set_objective_type(PerformanceFunctional::SUM_SQUARED_ERROR_OBJECTIVE);

    ts.set_main_type(TrainingStrategy::QUASI_NEWTON_METHOD);

    ts.get_quasi_Newton_method_pointer()->set_display(false);

    gs.set_trials_number(1);
    gs.set_maximum_order(7);
    gs.set_generalization_performance_goal(1.0e-3);
    gs.set_display(false);

    results = gs.perform_order_selection();

    assert_true(nn.get_multilayer_perceptron_pointer()->arrange_layers_perceptrons_numbers()[0] == 1, LOG);
    assert_true(results->stopping_condition ==
                OrderSelectionAlgorithm::GeneralizationPerformanceGoal, LOG);

    // Test

    str =
            "-1 -1\n"
            "-0.9 -0.9\n"
            "-0.8 -0.8\n"
            "-0.7 -0.7\n"
            "-0.6 -0.6\n"
            "-0.5 -0.5\n"
            "-0.4 -0.4\n"
            "-0.3 -0.3\n"
            "-0.2 -0.2\n"
            "-0.1 -0.1\n"
            "0.0 0.0\n"
            "0.1 0.1\n"
            "0.2 0.2\n"
            "0.3 0.3\n"
            "0.4 0.4\n"
            "0.5 0.5\n"
            "0.6 0.6\n"
            "0.7 0.7\n"
            "0.8 0.8\n"
            "0.9 0.9\n"
            "1 1\n";

    data.parse(str);
    ds.set(data);

    uses.set(21,Instances::Training);
    for (size_t i = 0; i < 11; i++)
        uses[2*i+1] = Instances::Generalization;

    ds.get_instances_pointer()->set_uses(uses);

    nn.set(1,3,1);
    nn.initialize_parameters(0.0);

    pf.set_objective_type(PerformanceFunctional::SUM_SQUARED_ERROR_OBJECTIVE);

    ts.set_main_type(TrainingStrategy::QUASI_NEWTON_METHOD);

    ts.get_quasi_Newton_method_pointer()->set_display(false);

    gs.set_trials_number(1);
    gs.set_maximum_order(7);
    gs.set_generalization_performance_goal(0.0);
    gs.set_display(false);

    results = gs.perform_order_selection();

    assert_true(nn.get_multilayer_perceptron_pointer()->arrange_layers_perceptrons_numbers()[0] == 1, LOG);


}