AIfES 2 2.0.0
aiopti_adam.h
Go to the documentation of this file.
1
48#ifndef AIOPTI_ADAM
49#define AIOPTI_ADAM
50
51#include "core/aifes_core.h"
52
53typedef struct aiopti_adam aiopti_adam_t;
68 void *beta1;
69 void *beta2;
70 void *eps;
72
78 void *beta1t;
79 void *beta2t;
82 void *lrt;
84
89
97 void (*multiply)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result);
98
106 void (*divide)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result);
107
115 void (*tensor_add)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result);
116
124 void (*tensor_sub)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result);
125
133 void (*scalar_mul)(const void *scalar, const aitensor_t *a, aitensor_t *result);
134
142 void (*scalar_add)(const void *scalar, const aitensor_t *a, aitensor_t *result);
143
151 void (*sqrt)(const aitensor_t *x, aitensor_t *result);
152
160 void (*zero_tensor)(aitensor_t *tensor);
161
163};
164
171
180};
181
192
205uint32_t aiopti_adam_sizeof_optimem(aiopti_t *self, const aitensor_t *params);
206
227void aiopti_adam_init_optimem(aiopti_t *self, const aitensor_t *params, const aitensor_t *gradients, void *optimem);
228
244
283void aiopti_adam_update_params(aiopti_t *self, aitensor_t *params, const aitensor_t *gradients, void *optimem);
284
285#ifdef AIDEBUG_PRINT_MODULE_SPECS
292#endif // AIDEBUG_PRINT_MODULE_SPECS
293
294#endif // AIOPTI_ADAM
295
AIfES 2 core interface.
void aiopti_adam_update_params(aiopti_t *self, aitensor_t *params, const aitensor_t *gradients, void *optimem)
Update the given parameter tensor with respect to the gradients.
void aiopti_adam_init_optimem(aiopti_t *self, const aitensor_t *params, const aitensor_t *gradients, void *optimem)
Initialization of the optimization memory buffer.
void aiopti_adam_zero_gradients(aiopti_t *self, aitensor_t *gradients)
Set the gradients to zero.
uint32_t aiopti_adam_sizeof_optimem(aiopti_t *self, const aitensor_t *params)
Calculates the required memory for the optimization step.
void aiopti_adam_print_specs(const aiopti_t *self)
Print the optimizer specification.
aiopti_t * aiopti_adam(aiopti_adam_t *opti)
Initialize the given Adam optimizer.
const aicore_optitype_t * aiopti_adam_type
Adam optimizer type.
Type indicator of the optimizer to check for the optimizer type.
Definition: aifes_core.h:160
Struct for the momentum tensors of an Adam optimizer.
Definition: aiopti_adam.h:177
aitensor_t v
Second momentum vector.
Definition: aiopti_adam.h:179
aitensor_t m
First momentum vector.
Definition: aiopti_adam.h:178
General Adam optimizer struct.
Definition: aiopti_adam.h:59
void(* scalar_mul)(const void *scalar, const aitensor_t *a, aitensor_t *result)
Required math function: Multiplication of a scalar with a tensor.
Definition: aiopti_adam.h:133
void * one_minus_beta1
aiscalar: Auxiliary variable to calculate
Definition: aiopti_adam.h:80
void(* multiply)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)
Required math function: Element wise tensor multiplication.
Definition: aiopti_adam.h:97
void(* scalar_add)(const void *scalar, const aitensor_t *a, aitensor_t *result)
Required math function: Element wise addition of a scalar to a tensor.
Definition: aiopti_adam.h:142
void(* divide)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)
Required math function: Element wise tensor dividation.
Definition: aiopti_adam.h:106
void(* sqrt)(const aitensor_t *x, aitensor_t *result)
Required math function: Square root.
Definition: aiopti_adam.h:151
void(* tensor_sub)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)
Required math function: Element wise tensor subtraction.
Definition: aiopti_adam.h:124
void * eps
aiscalar: Small positive number for numerical stability (avoid dividing by 0)
Definition: aiopti_adam.h:70
void * one_minus_beta2
aiscalar: Auxiliary variable to calculate
Definition: aiopti_adam.h:81
void(* tensor_add)(const aitensor_t *a, const aitensor_t *b, aitensor_t *result)
Required math function: Element wise tensor addition.
Definition: aiopti_adam.h:115
aiopti_t base
Inherited field members from general optimizer struct.
Definition: aiopti_adam.h:60
void * beta1t
aiscalar: Auxiliary variable to calculate
Definition: aiopti_adam.h:78
void * beta2t
aiscalar: Auxiliary variable to calculate
Definition: aiopti_adam.h:79
void * lrt
aiscalar: Auxiliary variable to calculate
Definition: aiopti_adam.h:82
void * beta2
aiscalar: Exponential decay rate for the second moment estimates
Definition: aiopti_adam.h:69
void(* zero_tensor)(aitensor_t *tensor)
Required math function: Sets the elements of a tensor to zero.
Definition: aiopti_adam.h:160
void * beta1
aiscalar: Exponential decay rate for the first moment estimates
Definition: aiopti_adam.h:68
AIfES optimizer interface.
Definition: aifes_core.h:411
A tensor in AIfES.
Definition: aifes_math.h:92