20 std::vector<Variable> _children;
35 std::string
name =
"")
43 : _value(other._value), _gradient(other._gradient), _op(other._op),
44 _name(other._name), ref(other.ref), _children(other._children),
45 _backward(other._backward){};
55 this->_value = other._value;
56 this->_gradient = other._gradient;
57 this->_op = other._op;
58 this->_name = other._name;
59 this->_children = other._children;
60 this->_backward = other._backward;
61 this->ref = other.ref;
73 this->_value = other._value;
74 this->_gradient = other._gradient;
75 this->_op = other._op;
76 this->_name = other._name;
77 this->_children = other._children;
78 this->_backward = other._backward;
90 : _value(other._value), _gradient(other._gradient), _op(other._op),
91 _name(other._name), ref(other.ref), _children(other._children),
92 _backward(other._backward)
119 const std::string &
name()
const
146 const std::string &
op()
const
239 for (
auto &child : _children)
253 if (
this != ref && ref !=
nullptr)
266 if (
this != ref && ref !=
nullptr)
279 _value -= lr * _gradient;
280 if (
this != ref && ref !=
nullptr)
409 const std::vector<Variable> &b);
418 const std::vector<double> &b);
Definition: variable.h:13
Variable sigmoid() const
Definition: variable.cc:452
Variable log() const
Definition: variable.cc:316
Variable operator-() const
Definition: variable.cc:91
void set_gradient(double gradient)
Definition: variable.h:182
Variable operator+(const Variable &other)
Definition: variable.cc:15
Variable exp() const
Definition: variable.cc:301
const std::vector< Variable > & children() const
Definition: variable.h:209
void set_name(const std::string &name)
Definition: variable.h:128
void update_gradient(double grad)
Definition: variable.h:250
Variable sinh() const
Definition: variable.cc:388
Variable tanh() const
Definition: variable.cc:421
friend std::ostream & operator<<(std::ostream &os, const Variable &var)
Definition: variable.cc:5
double gradient() const
Definition: variable.h:173
Variable * reference() const
Definition: variable.h:191
void set_ref(Variable *reference)
Definition: variable.h:200
void set_children(const std::vector< Variable > &children)
Definition: variable.h:227
friend Variable dot_product(const std::vector< Variable > &a, const std::vector< Variable > &b)
Definition: variable.cc:213
Variable identity() const
Definition: variable.cc:106
void backward()
Definition: variable.h:236
Variable cosh() const
Definition: variable.cc:404
Variable tan() const
Definition: variable.cc:367
void zero_grad()
Definition: variable.h:263
Variable(const Variable &other)
Definition: variable.h:42
std::vector< Variable > & mutable_children()
Definition: variable.h:218
Variable & operator=(const Variable &other)
Definition: variable.h:53
const std::string & op() const
Definition: variable.h:146
const std::string & name() const
Definition: variable.h:119
void set_backward(std::function< void(Variable *)> backward)
Definition: variable.h:164
Variable(Variable &&other) noexcept
Definition: variable.h:89
Variable & operator=(Variable &&other) noexcept
Definition: variable.h:71
Variable relu() const
Definition: variable.cc:436
Variable sin() const
Definition: variable.cc:335
Variable pow(const double other) const
Definition: variable.cc:280
~Variable()
Definition: variable.h:101
void gradient_descent(double lr)
Definition: variable.h:277
void set_value(double value)
Definition: variable.h:137
void set_op(const std::string &op)
Definition: variable.h:155
Variable cos() const
Definition: variable.cc:351
Variable operator*(const Variable &other)
Definition: variable.cc:49
Variable operator/(const Variable &other)
Definition: variable.cc:68
double value() const
Definition: variable.h:110
Variable(double value=0, double gradient=0, std::string op="", std::string name="")
Definition: variable.h:32
Variable activate(std::string activate_function)
Definition: variable.cc:469