Loading...
Searching...
No Matches
levenberg_marquardt.h
Go to the documentation of this file.
1// SPDX-License-Identifier: AGPL-3.0-only
2// Copyright (C) 2026 Artificial Intelligence Techniques, S.L. and Roberto López González
3
4#pragma once
5
7
8namespace opennn
9{
10
11class Network;
12class Dense;
14
16{
17 explicit BackPropagationLM(const Index = 0, Loss* = nullptr);
18
19 float error = 0.0f;
20 float regularization = 0.0f;
21 float loss = 0.0f;
22
25
28
29 vector<Index> dense_indices;
30 vector<Index> parameter_offsets;
31 vector<MatrixR> deltas;
32 vector<MatrixR> activation_derivatives;
33};
34
35class LevenbergMarquardt final : public Optimizer
36{
37
38public:
39
41
42 explicit LevenbergMarquardt(Loss* = nullptr);
43
45
46 void set_minimum_loss_decrease(const float new_minimum_loss_decrease) { minimum_loss_decrease = new_minimum_loss_decrease; }
48 void from_JSON(const JsonDocument&) override;
49
50 void to_JSON(JsonWriter&) const override;
51
52private:
53
54 void back_propagate(const Batch&, const ForwardPropagation&, BackPropagationLM&) const;
55
56 void update_full_batch_parameters(const Batch&,
60
61 void calculate_errors(const Batch&, const ForwardPropagation&, BackPropagationLM&) const;
62
63 void compute_jacobian(const Batch&,
64 const ForwardPropagation&,
65 BackPropagationLM&) const;
66
67 VectorR potential_parameters;
68
69 float damping_parameter = 0.0f;
70
71 float initial_damping_parameter = 1.0e-3f;
72
73 float minimum_damping_parameter = 1.0e-6f;
74
75 float maximum_damping_parameter = 1.0e6f;
76
77 float damping_parameter_factor = 10.0f;
78
79 float minimum_loss_decrease = 0.0f;
80
81};
82
83}
Definition dense_layer.h:17
Definition json.h:75
Definition json.h:92
void set_damping_parameter_factor(const float)
void set_minimum_loss_decrease(const float new_minimum_loss_decrease)
Definition levenberg_marquardt.h:46
LevenbergMarquardt(Loss *=nullptr)
DataSlot
Definition levenberg_marquardt.h:40
@ ParameterUpdate
Definition levenberg_marquardt.h:40
void from_JSON(const JsonDocument &) override
void to_JSON(JsonWriter &) const override
TrainingResult train() override
Definition loss.h:19
Definition network.h:87
Optimizer(Loss *=nullptr)
Definition configuration.h:10
Eigen::Matrix< float, Eigen::Dynamic, 1 > VectorR
Definition opennn_types.h:335
Eigen::Matrix< float, Eigen::Dynamic, Eigen::Dynamic, Layout > MatrixR
Definition opennn_types.h:331
Definition levenberg_marquardt.h:16
vector< Index > dense_indices
Definition levenberg_marquardt.h:29
float loss
Definition levenberg_marquardt.h:21
MatrixR squared_errors_jacobian
Definition levenberg_marquardt.h:24
vector< Index > parameter_offsets
Definition levenberg_marquardt.h:30
VectorR gradient
Definition levenberg_marquardt.h:26
VectorR errors
Definition levenberg_marquardt.h:23
MatrixR hessian
Definition levenberg_marquardt.h:27
float error
Definition levenberg_marquardt.h:19
vector< MatrixR > deltas
Definition levenberg_marquardt.h:31
vector< MatrixR > activation_derivatives
Definition levenberg_marquardt.h:32
BackPropagationLM(const Index=0, Loss *=nullptr)
float regularization
Definition levenberg_marquardt.h:20
Definition batch.h:60
Definition forward_propagation.h:52
Definition optimizer.h:28
Definition training_result.h:20