Exemplo n.º 1
0
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);
    }
}