DLPrimitives
Classes | Public Member Functions | List of all members
dlprim::Elementwise Class Reference
Inheritance diagram for dlprim::Elementwise:
dlprim::Operator

Public Member Functions

 Elementwise (Context &ctx, ElementwiseConfig config=ElementwiseConfig())
 
virtual char const * operator_type () const
 name of the operator type
 
virtual void setup (std::vector< TensorSpecs > const &in, std::vector< TensorSpecs > &out, std::vector< TensorSpecs > &parameters, size_t &workspace)
 Convigure operator. More...
 
virtual void reshape (std::vector< Shape > const &in, std::vector< Shape > &out, size_t &ws)
 Reshape layer according to new input size. More...
 
virtual void forward (std::vector< Tensor > &input, std::vector< Tensor > &output, std::vector< Tensor > &parameters, Tensor &workspace, ExecutionContext const &ctx)
 Enqueue forward propogation computations. More...
 
virtual void backward (std::vector< TensorAndGradient > &input, std::vector< TensorAndGradient > &output, std::vector< TensorAndGradient > &parameters, Tensor &workspace, ExecutionContext const &ctx)
 Enqueue backward propogation computations. More...
 
- Public Member Functions inherited from dlprim::Operator
 Operator (Context const &ctx)
 Create operator for specific context (device/platform)
 
SharedResourceshared_resource ()
 Getter for object that is shared between operators accross the net, for example random numbers generator.
 
void shared_resource (std::shared_ptr< SharedResource > r)
 Setter of the shared resource.
 
virtual void mode (CalculationsMode mode)
 Can be called with both train and predict before setup() is called. afterwards if original mode was train - it can be switched to predict and back but if original mode was predict it can't be switched to train. More...
 
virtual CalculationsMode mode ()
 get current mode
 
 Operator (Operator const &)=delete
 operator non-copyable/moveable More...
 
void operator= (Operator const &)=delete
 
 Operator (Operator &&)=delete
 
void operator= (Operator &&)=delete
 
virtual bool alias_generator ()
 returns true of the operator is alias - generation - it only changes the shape of tensor but not its content it actually does not perform any operation but only changes semantics, in this casse input and output are aliases of each other
 
virtual void initialize_params (std::vector< Tensor > &, ExecutionContext const &)
 Set default parameters iniitalization.
 

Additional Inherited Members

- Protected Attributes inherited from dlprim::Operator
Context ctx_
 OpenCL/CPU Context to work with.
 
CalculationsMode mode_
 computaions mode
 
std::shared_ptr< SharedResourceshared_resource_
 

Member Function Documentation

virtual void dlprim::Elementwise::backward ( std::vector< TensorAndGradient > &  ,
std::vector< TensorAndGradient > &  ,
std::vector< TensorAndGradient > &  ,
Tensor ,
ExecutionContext const &   
)
virtual

Enqueue backward propogation computations.

Parameters
input- inputs and their gradients marked for computatins
output- outputs and their gradients
parameters- parameters parameters and their gradients
workspace- workspace as required
ctx- execution context

Note: actual inputs are

  • inputs[index].data
  • outputs[index].data
  • outputs[index].diff
  • parameters[index].data

And it computes in backpropogation

  • inputs[index].diff
  • parameters[index].diff

If computation is not needed TensorAndGradient::requires_gradient need to be set to false

Reimplemented from dlprim::Operator.

virtual void dlprim::Elementwise::forward ( std::vector< Tensor > &  input,
std::vector< Tensor > &  output,
std::vector< Tensor > &  parameters,
Tensor workspace,
ExecutionContext const &  ctx 
)
virtual

Enqueue forward propogation computations.

Parameters
input- input tesnosrs (X)
output- output tesnors (Y)
parameters- parameters for computation
workspace- workspace as required
ctx- execution context

Implements dlprim::Operator.

virtual void dlprim::Elementwise::reshape ( std::vector< Shape > const &  in,
std::vector< Shape > &  out,
size_t &  workspace 
)
virtual

Reshape layer according to new input size.

Parameters
in- new input tensor sizes
out- new output tesor sizes
workspace- new workspace size needed

Implements dlprim::Operator.

virtual void dlprim::Elementwise::setup ( std::vector< TensorSpecs > const &  in,
std::vector< TensorSpecs > &  out,
std::vector< TensorSpecs > &  parameters,
size_t &  workspace 
)
virtual

Convigure operator.

Parameters
in- a list of expected input tensors
out- a list of output tensots - that opertor calculates in fwd propogation
parameters- a list of parameters need for computation. If parameter should not participate in gradient desend it should be marked as not trainable
workspacesize needed for computations in bytes - not preserved between different calls

Implements dlprim::Operator.


The documentation for this class was generated from the following file: