Matrix<double> NeuralParametersNorm::calculate_Hessian(const Vector<double>& parameters) const { // Control sentence (if debug) #ifdef __OPENNN_DEBUG__ check(); #endif if(neural_network_pointer->has_independent_parameters()) { const MultilayerPerceptron* multilayer_perceptron_pointer = neural_network_pointer->get_multilayer_perceptron_pointer(); const size_t neural_parameters_number = multilayer_perceptron_pointer->count_parameters_number(); Vector<double> neural_parameters(parameters); neural_parameters.resize(neural_parameters_number); return(neural_parameters.calculate_norm_Hessian()*neural_parameters_norm_weight); } else { return(parameters.calculate_norm_Hessian()*neural_parameters_norm_weight); } }
Vector<double> NeuralParametersNorm::calculate_gradient(const Vector<double>& parameters) const { // Control sentence (if debug) #ifndef NDEBUG check(); #endif if(neural_network_pointer->has_independent_parameters()) { const MultilayerPerceptron* multilayer_perceptron_pointer = neural_network_pointer->get_multilayer_perceptron_pointer(); const unsigned neural_parameters_number = multilayer_perceptron_pointer->count_parameters_number(); Vector<double> neural_parameters(parameters); neural_parameters.resize(neural_parameters_number); return(neural_parameters.calculate_norm_gradient()*neural_parameters_norm_weight); } else { return(parameters.calculate_norm_gradient()*neural_parameters_norm_weight); } }