MagmaDNN  1.0
c++NeuralNetworkFramework
logop.h
1 
2 #pragma once
3 
4 #include "compute/operation.h"
5 #include "tensor/tensor.h"
6 #include "compute/variable.h"
7 #include "compute/div/divop.h"
9 #include "compute/log/log_internal.h"
10 
11 namespace magmadnn {
12 namespace op {
13 
14 template <typename T>
15 class LogOp : public Operation<T> {
16 public:
17  LogOp(Operation<T> *x, bool copy=true, bool needs_grad=true);
18 
19  std::string to_string() { return "log( " + x->to_string() + " )"; }
20 protected:
21  Tensor<T> *_eval(bool recompute=true);
23 
24  Operation<T> *x;
25  Tensor<T> *x_tensor;
26 
27  bool copy;
28 };
29 
30 template <typename T>
31 LogOp<T>* log(Operation<T> *x, bool copy=true, bool needs_grad=true);
32 
33 } // namespace op
34 } // namespace magmadnn
Tensor< T > * _grad(Operation< T > *consumer, Operation< T > *var, Tensor< T > *grad)
Definition: logop.cpp:33
std::string to_string()
Definition: logop.h:19
Definition: addop.cpp:11
Definition: logop.h:15
Definition: tensor.h:34
virtual Tensor< T > * grad(Operation< T > *consumer, Operation< T > *var, Tensor< T > *grad, bool recompute=true)
Definition: operation.h:93
Tensor< T > * _eval(bool recompute=true)
Definition: logop.cpp:21
virtual std::string to_string()=0
Definition: operation.h:18
Variable< T > * var(std::string name, Tensor< T > *val)
Definition: variable.cpp:73