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