MagmaDNN  1.0
c++NeuralNetworkFramework
transposeop.h
1 
2 #pragma once
3 
4 #include "compute/operation.h"
5 #include "tensor/tensor.h"
6 #include "utilities_internal.h"
7 #include "compute/transpose/transpose_internal.h"
8 
9 namespace magmadnn {
10 namespace op {
11 
12 template <typename T>
13 class TransposeOp : public Operation<T> {
14 public:
15  TransposeOp(Operation<T> *x, bool copy=true, bool needs_grad=true);
16 
17  std::string to_string() { return x->to_string() + ".T"; }
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 TransposeOp<T>* transpose(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: transposeop.cpp:24
Definition: tensor.h:34
std::string to_string()
Definition: transposeop.h:17
virtual Tensor< T > * grad(Operation< T > *consumer, Operation< T > *var, Tensor< T > *grad, bool recompute=true)
Definition: operation.h:93
Definition: transposeop.h:13
virtual std::string to_string()=0
Definition: operation.h:18
Variable< T > * var(std::string name, Tensor< T > *val)
Definition: variable.cpp:73
Tensor< T > * _grad(Operation< T > *consumer, Operation< T > *var, Tensor< T > *grad)
Definition: transposeop.cpp:34