5#include <unordered_map>
93 bool nesterov =
false);
103 T
get_lr()
const override {
return lr_; }
117 std::vector<Matrix<T>> momentum_buffers_;
119 void initialize_momentum_buffers();
147 T weight_decay = 0.0);
152 void step()
override;
157 T
get_lr()
const override {
return lr_; }
172 std::vector<Matrix<T>> exp_avg_;
173 std::vector<Matrix<T>> exp_avg_sq_;
176 void initialize_state();
204 T weight_decay = 1e-2);
209 void step()
override;
214 T
get_lr()
const override {
return lr_; }
229 std::vector<Matrix<T>> exp_avg_;
230 std::vector<Matrix<T>> exp_avg_sq_;
233 void initialize_state();
259 T weight_decay = 0.0,
265 void step()
override;
270 T
get_lr()
const override {
return lr_; }
285 std::vector<Matrix<T>> square_avg_;
286 std::vector<Matrix<T>> momentum_buffer_;
288 void initialize_state();
322 :
LRScheduler<T>(optimizer), step_size_(step_size), gamma_(gamma),
323 last_epoch_(0), base_lr_(optimizer->
get_lr()) {}
325 void step()
override;
PyTorch-like automatic differentiation engine.
AdamW optimizer with autograd support.
void step() override
Perform one AdamW step.
void set_lr(T lr) override
Set learning rate.
T get_lr() const override
Get learning rate.
Adam optimizer with autograd support.
void set_lr(T lr) override
Set learning rate.
T get_lr() const override
Get learning rate.
void step() override
Perform one Adam step.
Base class for autograd-compatible optimizers.
virtual ~AutogradOptimizer()=default
virtual T get_lr() const =0
Get learning rate.
virtual void step()=0
Perform one optimization step.
AutogradOptimizer(std::vector< Variable< T > * > parameters)
Constructor.
std::vector< Variable< T > * > parameters_
virtual void set_lr(T lr)=0
Set learning rate.
virtual void zero_grad()
Zero gradients of all parameters.
Learning rate scheduler base class.
virtual ~LRScheduler()=default
AutogradOptimizer< T > * optimizer_
virtual void step()=0
Update learning rate.
T get_lr() const
Get current learning rate.
LRScheduler(AutogradOptimizer< T > *optimizer)
RMSprop optimizer with autograd support.
T get_lr() const override
Get learning rate.
void step() override
Perform one RMSprop step.
void set_lr(T lr) override
Set learning rate.
Stochastic Gradient Descent optimizer with autograd support.
void set_lr(T lr) override
Set learning rate.
T get_lr() const override
Get learning rate.
void step() override
Perform one SGD step.
Step learning rate scheduler Decays learning rate by gamma every step_size epochs.
void step() override
Update learning rate.
StepLR(AutogradOptimizer< T > *optimizer, size_t step_size, T gamma=0.1)
Variable class that supports automatic differentiation.
Matrix utility class for deep learning operations.