MagmaDNN  1.0
c++NeuralNetworkFramework
scalarproductop.h
1 
2 #pragma once
3 
4 #include "compute/operation.h"
5 #include "tensor/tensor.h"
6 #include "compute/scalarproduct/scalarproduct_internal.h"
7 
8 namespace magmadnn {
9 namespace op {
10 
14 template <typename T>
15 class ScalarProductOp : public Operation<T> {
16 public:
17  ScalarProductOp(T alpha, Operation<T> *x, bool copy=true, bool needs_grad=true);
18  ScalarProductOp(Operation<T> *scalar, Operation<T> *x, bool copy=true, bool needs_grad=true);
19 
20 
21  std::string to_string();
22 protected:
23  Tensor<T> *_eval(bool recompute=true);
25 
26  T alpha;
27  Operation<T> *scalar;
28  Operation<T> *x;
29 
30  Tensor<T> *x_tensor;
31  Tensor<T> *scalar_tensor;
32 
33  bool copy;
34 };
35 
36 template <typename T>
37 ScalarProductOp<T> *scalarproduct(T alpha, Operation<T> *x, bool copy=true, bool needs_grad=true);
38 
39 template <typename T>
40 ScalarProductOp<T> *scalarproduct(Operation<T> *scalar, Operation<T> *x, bool copy=true, bool needs_grad=true);
41 
42 } // namespace op
43 } // namespace magmadnn
Definition: addop.cpp:11
std::string to_string()
Definition: scalarproductop.cpp:71
Definition: scalarproductop.h:15
Definition: tensor.h:34
Tensor< T > * _eval(bool recompute=true)
Definition: scalarproductop.cpp:40
Tensor< T > * _grad(Operation< T > *consumer, Operation< T > *var, Tensor< T > *grad)
Definition: scalarproductop.cpp:58
virtual Tensor< T > * grad(Operation< T > *consumer, Operation< T > *var, Tensor< T > *grad, bool recompute=true)
Definition: operation.h:93
Definition: operation.h:18
Variable< T > * var(std::string name, Tensor< T > *val)
Definition: variable.cpp:73