Loading...
Searching...
No Matches
sgd.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
11struct BackPropagation;
12
13class SGD final : public Optimizer
14{
15
16public:
17
19
20 explicit SGD(Loss* = nullptr);
21
22 void set_initial_learning_rate(const float new_learning_rate) { initial_learning_rate = new_learning_rate; }
23 float get_initial_learning_rate() const { return initial_learning_rate; }
24 void set_initial_decay(const float new_decay) { initial_decay = new_decay; }
25 void set_momentum(const float new_momentum) { momentum = new_momentum; }
26 void set_nesterov(bool new_nesterov_momentum) { nesterov = new_nesterov_momentum; }
27
30
31 void from_JSON(const JsonDocument&) override;
32
33 void to_JSON(JsonWriter&) const override;
34
35private:
36
37 string get_display_name() const override { return "stochastic gradient descent (SGD)"; }
38 bool supports_cuda_graph() const noexcept override { return true; }
39 void setup_optimizer_data(OptimizerData&, Index, Device) override;
40 void on_epoch_begin(Index, OptimizerData&) override;
41
42 float initial_learning_rate = 0.001f;
43
44 float initial_decay = 0.001f;
45
46 float momentum = 0.0f;
47
48 float current_learning_rate = 0.0f;
49
50 bool nesterov = false;
51};
52
53}
Definition json.h:75
Definition json.h:92
Definition loss.h:19
UpdateMode
Definition optimizer.h:115
@ Standard
Definition optimizer.h:115
Optimizer(Loss *=nullptr)
void from_JSON(const JsonDocument &) override
float get_initial_learning_rate() const
Definition sgd.h:23
DataSlot
Definition sgd.h:18
@ Velocity
Definition sgd.h:18
@ GraphLearningRate
Definition sgd.h:18
SGD(Loss *=nullptr)
void set_momentum(const float new_momentum)
Definition sgd.h:25
void set_nesterov(bool new_nesterov_momentum)
Definition sgd.h:26
void to_JSON(JsonWriter &) const override
void set_initial_decay(const float new_decay)
Definition sgd.h:24
void update_parameters(BackPropagation &, OptimizerData &, UpdateMode=UpdateMode::Standard) override
void set_initial_learning_rate(const float new_learning_rate)
Definition sgd.h:22
Definition configuration.h:10
Device
Definition configuration.h:12
Definition back_propagation.h:19
Definition optimizer.h:28