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