class QPanda::Variational::Optimizer

Optimizer base class.

#include <Optimizer.h>

class Optimizer
{
public:
    // construction

    Optimizer(
        var lost_function,
        double learning_rate = 0.01
        );

    // methods

    virtual std::unordered_set<var> get_variables() = 0;
    virtual std::unordered_map<var, MatrixXd> compute_gradients(std::unordered_set<var>& var_set) = 0;
    virtual double get_loss() = 0;

    virtual bool run(
        std::unordered_set<var>& leaves,
        size_t t = 0
        ) = 0;
};

// direct descendants

class AdaGradOptimizer;
class AdamOptimizer;
class MomentumOptimizer;
class RMSPropOptimizer;
class VanillaGradientDescentOptimizer;