Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Special Interest Groups
  3. C++ Gurus
  4. OpenNN memory problem

OpenNN memory problem

Scheduled Pinned Locked Moved C++ Gurus
3 Posts 2 Posters 655 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • R Offline
    R Offline
    redmello
    wrote on last edited by
    #1

    I use a modified version of airfoil_self_noise from the OpenNN (http://www.opennn.net/) library which is attached.I use Qt Creator 4.8.2 (community) to compile it using the kit : MSVC 2017 64 bit with Microsoft Visual C++ compiler 15.0 (x86_AMD64) & cdb debugger.Compilation ends successfully without problems in both cases(see in file :case1 & case2) but when I run the exe_case1 there is no problem while when I run the exe_case2 I obtain this error:

    Error :OpenNN Exception: TrainingStrategy class.
    LevenbergMarquardtAlgorithm* get_Levenberg_Marquardt_algorithm_pointer(void) const method.
    Levenberg_Marquardt algorithm pointer is NULL.

    The only difference between the two is in the lines 293-309.[0_1552903063134_main.cpp](Uploading 100%)

    I'm not a C++ expert so this problem is difficult for me. Can you help me?

    Thanks!

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #2

      Hi and welcome to devnet,

      Can you post the code ? Your upload didn't work.

      Interested in AI ? www.idiap.ch
      Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

      1 Reply Last reply
      0
      • R Offline
        R Offline
        redmello
        wrote on last edited by redmello
        #3

        Here is my code:

        // System includes
        
         #include <iostream>
         #include <fstream>
         #include <sstream>
         #include <string>
         #include <cstring>
         #include <time.h>
        
         // OpenNN includes
        
         #include "../../opennn/opennn.h"
         #include <levenberg_marquardt_algorithm.h>
         #include <quasi_newton_method.h>
        
         using namespace OpenNN;
        
         int main(void)
         {
        try
        {
            int rank = 0;
        
           #ifdef __OPENNN_MPI__
        
            int size = 1;
        
            MPI_Init(NULL,NULL);
        
            MPI_Comm_size(MPI_COMM_WORLD, &size);
        
            MPI_Comm_rank(MPI_COMM_WORLD, &rank);
        
           #endif
        
            if(rank == 0)
            {
                std::cout << "OpenNN. Airfoil Self-Noise Application." << std::endl;
            }
        
            srand((unsigned)time(NULL));
        
            // Global variables
        
            DataSet data_set;
        
            NeuralNetwork neural_network;
        
            LossIndex loss_index;
        
            TrainingStrategy training_strategy;
        
            // Local variables
        
            DataSet local_data_set;
        
            NeuralNetwork local_neural_network;
        
            LossIndex local_loss_index;
        
            TrainingStrategy local_training_strategy;
        
            if(rank == 0)
            {
        
        
                // Data set
                data_set.set_data_file_name("../data/temprenetinputs11.csv"); // controllare dati
                data_set.set_separator("Space");
                data_set.load_data();
        
                printf("%s\n","data_set");
                std::cout << typeid(data_set).name() << std::endl;
        
                // Variables
        
                Variables* variables_pointer = data_set.get_variables_pointer();
        
                 variables_pointer->set_name(0, "1");
                variables_pointer->set_units(0, "pip");
                  variables_pointer->set_use(0, Variables::Input);
                 variables_pointer->set_name(1, "2");
                variables_pointer->set_units(1, "pip");
                  variables_pointer->set_use(1, Variables::Input);
                 variables_pointer->set_name(2, "3");
                variables_pointer->set_units(2, "pip");
                  variables_pointer->set_use(2, Variables::Input);
                 variables_pointer->set_name(3, "4");
                variables_pointer->set_units(3, "pip");
                  variables_pointer->set_use(3, Variables::Input);
                 variables_pointer->set_name(4, "5");
                variables_pointer->set_units(4, "pip");
                  variables_pointer->set_use(4, Variables::Input);
                 variables_pointer->set_name(5, "6");
                variables_pointer->set_units(5, "pip");
                  variables_pointer->set_use(5, Variables::Input);
                 variables_pointer->set_name(6, "7");
                variables_pointer->set_units(6, "pip");
                  variables_pointer->set_use(6, Variables::Input);
                 variables_pointer->set_name(7, "8");
                variables_pointer->set_units(7, "pip");
                  variables_pointer->set_use(7, Variables::Input);
                 variables_pointer->set_name(8, "9");
                variables_pointer->set_units(8, "pip");
                  variables_pointer->set_use(8, Variables::Input);
                 variables_pointer->set_name(9, "10");
                variables_pointer->set_units(9, "pip");
                  variables_pointer->set_use(9, Variables::Input);
                 variables_pointer->set_name(10, "11");
                variables_pointer->set_units(10, "pip");
                  variables_pointer->set_use(10, Variables::Input);
                 variables_pointer->set_name(11, "12");
                variables_pointer->set_units(11, "pip");
                  variables_pointer->set_use(11, Variables::Input);
                 variables_pointer->set_name(12, "13");
                variables_pointer->set_units(12, "pip");
                  variables_pointer->set_use(12, Variables::Input);
                 variables_pointer->set_name(13, "14");
                variables_pointer->set_units(13, "pip");
                  variables_pointer->set_use(13, Variables::Input);
                 variables_pointer->set_name(14, "15");
                variables_pointer->set_units(14, "pip");
                  variables_pointer->set_use(14, Variables::Input);
                 variables_pointer->set_name(15, "16");
                variables_pointer->set_units(15, "pip");
                  variables_pointer->set_use(15, Variables::Input);
                 variables_pointer->set_name(16, "17");
                variables_pointer->set_units(16, "pip");
                  variables_pointer->set_use(16, Variables::Input);
                 variables_pointer->set_name(17, "18");
                variables_pointer->set_units(17, "pip");
                  variables_pointer->set_use(17, Variables::Input);
                 variables_pointer->set_name(18, "19");
                variables_pointer->set_units(18, "pip");
                  variables_pointer->set_use(18, Variables::Input);
                 variables_pointer->set_name(19, "20");
                variables_pointer->set_units(19, "pip");
                  variables_pointer->set_use(19, Variables::Input);
                 variables_pointer->set_name(20, "21");
                variables_pointer->set_units(20, "pip");
                  variables_pointer->set_use(20, Variables::Input);
                 variables_pointer->set_name(21, "22");
                variables_pointer->set_units(21, "pip");
                  variables_pointer->set_use(21, Variables::Input);
                 variables_pointer->set_name(22, "23");
                variables_pointer->set_units(22, "pip");
                  variables_pointer->set_use(22, Variables::Input);
                 variables_pointer->set_name(23, "24");
                variables_pointer->set_units(23, "pip");
                  variables_pointer->set_use(23, Variables::Input);
                 variables_pointer->set_name(24, "25");
                variables_pointer->set_units(24, "pip");
                  variables_pointer->set_use(24, Variables::Input);
                  variables_pointer->set_name(25, "26");
                 variables_pointer->set_units(25, "pip");
                   variables_pointer->set_use(25, Variables::Input);
                  variables_pointer->set_name(26, "27");
                 variables_pointer->set_units(26, "pip");
                   variables_pointer->set_use(26, Variables::Input);
                  variables_pointer->set_name(27, "28");
                 variables_pointer->set_units(27, "pip");
                   variables_pointer->set_use(27, Variables::Input);
                  variables_pointer->set_name(28, "29");
                 variables_pointer->set_units(28, "pip");
                   variables_pointer->set_use(28, Variables::Input);
                  variables_pointer->set_name(29, "30");
                 variables_pointer->set_units(29, "pip");
                   variables_pointer->set_use(29, Variables::Input);
                  variables_pointer->set_name(30, "31");
                 variables_pointer->set_units(30, "pip");
                   variables_pointer->set_use(30, Variables::Input);
                  variables_pointer->set_name(31, "32");
                 variables_pointer->set_units(31, "pip");
                   variables_pointer->set_use(31, Variables::Input);
                  variables_pointer->set_name(32, "33");
                 variables_pointer->set_units(32, "pip");
                   variables_pointer->set_use(32, Variables::Input);
                  variables_pointer->set_name(33, "34");
                 variables_pointer->set_units(33, "pip");
                   variables_pointer->set_use(33, Variables::Input);
                  variables_pointer->set_name(34, "35");
                 variables_pointer->set_units(34, "pip");
                   variables_pointer->set_use(34, Variables::Input);
                  variables_pointer->set_name(35, "36");
                 variables_pointer->set_units(35, "pip");
                   variables_pointer->set_use(35, Variables::Input);
                  variables_pointer->set_name(36, "37");
                 variables_pointer->set_units(36, "pip");
                   variables_pointer->set_use(36, Variables::Input);
                  variables_pointer->set_name(37, "38");
                 variables_pointer->set_units(37, "pip");
                   variables_pointer->set_use(37, Variables::Input);
                  variables_pointer->set_name(38, "39");
                 variables_pointer->set_units(38, "pip");
                   variables_pointer->set_use(38, Variables::Input);
                  variables_pointer->set_name(39, "40");
                 variables_pointer->set_units(39, "pip");
                   variables_pointer->set_use(39, Variables::Input);
                   variables_pointer->set_name(40, "41");
                  variables_pointer->set_units(40, "pip");
                    variables_pointer->set_use(40, Variables::Input);
                   variables_pointer->set_name(41, "42");
                  variables_pointer->set_units(41, "pip");
                    variables_pointer->set_use(41, Variables::Input);
                   variables_pointer->set_name(42, "43");
                  variables_pointer->set_units(42, "pip");
                    variables_pointer->set_use(42, Variables::Input);
        
                variables_pointer->set_name(43, "target");
                variables_pointer->set_use(43, Variables::Target);
        
        
                const Matrix<std::string> inputs_information = variables_pointer->arrange_inputs_information();
                const Matrix<std::string> targets_information = variables_pointer->arrange_targets_information();
        
                // Instances
        
                Instances* instances_pointer = data_set.get_instances_pointer();
        
                instances_pointer->split_random_indices();
                //instances_pointer->split_random_indices(0.7, 0.15, 0.15);
        
                const Vector< Statistics<double> > inputs_statistics = data_set.scale_inputs_minimum_maximum(); // mapminmax
                const Vector< Statistics<double> > targets_statistics = data_set.scale_targets_minimum_maximum();
        
                // Neural network
        
                const size_t inputs_number = variables_pointer->count_inputs_number();
                const size_t hidden_perceptrons_number = 100;
                const size_t outputs_number = variables_pointer->count_targets_number();
        
                neural_network.set(inputs_number, hidden_perceptrons_number, outputs_number); // quale funzione di attivazione?
                //NeuralNetwork neural_network(inputs_number, hidden_perceptrons_number, outputs_number);                                                                              // validation ??
        
                Inputs* inputs = neural_network.get_inputs_pointer();
        
                inputs->set_information(inputs_information);
        
                Outputs* outputs = neural_network.get_outputs_pointer();
        
                outputs->set_information(targets_information);
        
                neural_network.construct_scaling_layer();
        
                ScalingLayer* scaling_layer_pointer = neural_network.get_scaling_layer_pointer();
        
                scaling_layer_pointer->set_statistics(inputs_statistics);
        
                scaling_layer_pointer->set_scaling_method(ScalingLayer::NoScaling);
        
                neural_network.construct_unscaling_layer();
        
                UnscalingLayer* unscaling_layer_pointer = neural_network.get_unscaling_layer_pointer();
        
                unscaling_layer_pointer->set_statistics(targets_statistics);
        
                unscaling_layer_pointer->set_unscaling_method(UnscalingLayer::NoUnscaling);
        
                // Loss index
        
                loss_index.set_data_set_pointer(&data_set);
                loss_index.set_neural_network_pointer(&neural_network);  // mse??
                loss_index.set_regularization_type(LossIndex::NEURAL_PARAMETERS_NORM);  // ??
        
                // Training strategy object
        
                training_strategy.set(&loss_index);
                //TrainingStrategy training_strategy(&neural_network, &data_set);
        
              // non sono i dati
              // Error :OpenNN Exception: TrainingStrategy class.
              // LevenbergMarquardtAlgorithm* get_Levenberg_Marquardt_algorithm_pointer(void) const method.
              // Levenberg_Marquardt algorithm pointer is NULL.
              // ottenere il valore esatto del pointer es.:0.0000
        
              //     CASE 2 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
              LevenbergMarquardtAlgorithm* Levenberg_Marquardt_algorithm_pointer = training_strategy.get_Levenberg_Marquardt_algorithm_pointer();
              Levenberg_Marquardt_algorithm_pointer->set_maximum_iterations_number(1000);
              Levenberg_Marquardt_algorithm_pointer->set_display_period(10);
              Levenberg_Marquardt_algorithm_pointer->set_minimum_loss_increase(1.0e-6);
              Levenberg_Marquardt_algorithm_pointer ->set_reserve_loss_history(true);
        
              //     CASE 1 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
               QuasiNewtonMethod* quasi_Newton_method_pointer = training_strategy.get_quasi_Newton_method_pointer();
               quasi_Newton_method_pointer->set_maximum_iterations_number(1000);
               quasi_Newton_method_pointer->set_display_period(10);
               quasi_Newton_method_pointer->set_minimum_loss_increase(1.0e-6);
               quasi_Newton_method_pointer->set_reserve_loss_history(true);
        
             // ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        
            }
        
        #ifdef __OPENNN_MPI__
            MPI_Barrier(MPI_COMM_WORLD);
        
            local_data_set.set_MPI(&data_set);
        
            local_neural_network.set_MPI(&neural_network);
        
            local_loss_index.set_MPI(&local_data_set,&local_neural_network,&loss_index);
        
            local_training_strategy.set_MPI(&local_loss_index,&training_strategy);
        
            MPI_Barrier(MPI_COMM_WORLD);
        
            TrainingStrategy::Results training_strategy_results = local_training_strategy.perform_training();
        #else
            TrainingStrategy::Results training_strategy_results = training_strategy.perform_training();
        #endif
        
            if(rank == 0)
            {
         #ifdef __OPENNN_MPI__
                neural_network.set_multilayer_perceptron_pointer(local_neural_network.get_multilayer_perceptron_pointer());
         #endif
                // Testing analysis
        
                TestingAnalysis testing_analysis(&neural_network, &data_set);
        
                TestingAnalysis::LinearRegressionResults linear_regression_results = testing_analysis.perform_linear_regression_analysis();
        
                // Save results
        
                ScalingLayer* scaling_layer_pointer = neural_network.get_scaling_layer_pointer();
                UnscalingLayer* unscaling_layer_pointer = neural_network.get_unscaling_layer_pointer();
        
                scaling_layer_pointer->set_scaling_method(ScalingLayer::MinimumMaximum);
                unscaling_layer_pointer->set_unscaling_method(UnscalingLayer::MinimumMaximum);
        
                data_set.save("../data/data_set.xml");
        
                neural_network.save("../data/neural_network.xml");
                neural_network.save_expression("../data/expression.txt");
        
                loss_index.save("../data/loss_index.xml");
        
                training_strategy.save("../data/training_strategy.xml");
                training_strategy_results.save("../data/training_strategy_results.dat");
        
                linear_regression_results.save("../data/linear_regression_analysis_results.dat");
            }
        
         #ifdef __OPENNN_MPI__
        
            MPI_Barrier(MPI_COMM_WORLD);
        
            MPI_Finalize();
        
         #endif
            return(0);
        }
        catch(std::exception& e)
        {
            std::cerr << e.what() << std::endl;
        
            std::getchar();
            return(1);
         }
         }
        
        
         // OpenNN: Open Neural Networks Library.
         // Copyright (C) 2005-2015 Roberto Lopez.
         //
         // This library is free software; you can redistribute it and/or
         // modify it under the terms of the GNU Lesser General Public
         // License as published by the Free Software Foundation; either
         // version 2.1 of the License, or any later version.
         //
        // This library is distributed in the hope that it will be useful,
        // but WITHOUT ANY WARRANTY; without even the implied warranty of
        // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
        // Lesser General Public License for more details.
        // You should have received a copy of the GNU Lesser General Public
        // License along with this library; if not, write to the Free Software
        // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA[0_1552982666677_main.cpp](Uploading 100%) 
        

        Thanks!

        1 Reply Last reply
        0

        • Login

        • Login or register to search.
        • First post
          Last post
        0
        • Categories
        • Recent
        • Tags
        • Popular
        • Users
        • Groups
        • Search
        • Get Qt Extensions
        • Unsolved