DLPrimitives
|
Public Member Functions | |
InnerProduct (Context &ctx, InnerProductConfig const &cfg) | |
virtual char const * | operator_type () const |
name of the operator type | |
void | initialize_params (std::vector< Tensor > ¶meters, ExecutionContext const &e) |
Set default parameters iniitalization. | |
virtual void | setup (std::vector< TensorSpecs > const &in, std::vector< TensorSpecs > &out, std::vector< TensorSpecs > ¶meters, 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 > ¶meters, Tensor &workspace, ExecutionContext const &ctx) |
Enqueue forward propogation computations. More... | |
virtual void | backward (std::vector< TensorAndGradient > &input, std::vector< TensorAndGradient > &output, std::vector< TensorAndGradient > ¶meters, 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) | |
SharedResource & | shared_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 | |
Protected Member Functions | |
void | forward_cpu (Tensor &in, Tensor &out, Tensor &M, Tensor *bias) |
void | backward_filter_cpu (Tensor &dy, Tensor &x, Tensor &dM, float factor) |
void | backward_data_cpu (Tensor &dy, Tensor &dx, Tensor &M, float factor) |
Protected Attributes | |
InnerProductConfig | config_ |
DataType | dtype_ |
std::unique_ptr< core::IPForward > | ip_ |
std::unique_ptr< core::IPBackwardData > | bwd_ip_ |
std::unique_ptr< core::IPBackwardFilter > | bwd_weights_ip_ |
std::unique_ptr< Operator > | activation_ |
std::unique_ptr< BWBias > | bwd_bias_ |
Protected Attributes inherited from dlprim::Operator | |
Context | ctx_ |
OpenCL/CPU Context to work with. | |
CalculationsMode | mode_ |
computaions mode | |
std::shared_ptr< SharedResource > | shared_resource_ |
|
virtual |
Enqueue backward propogation computations.
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
And it computes in backpropogation
If computation is not needed TensorAndGradient::requires_gradient need to be set to false
Reimplemented from dlprim::Operator.
|
virtual |
Enqueue forward propogation computations.
input | - input tesnosrs (X) |
output | - output tesnors (Y) |
parameters | - parameters for computation |
workspace | - workspace as required |
ctx | - execution context |
Implements dlprim::Operator.
|
virtual |
Reshape layer according to new input size.
in | - new input tensor sizes |
out | - new output tesor sizes |
workspace | - new workspace size needed |
Implements dlprim::Operator.
|
virtual |
Convigure operator.
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 |
workspace | size needed for computations in bytes - not preserved between different calls |
Implements dlprim::Operator.