DaNNet
Public Member Functions | Protected Attributes | Friends | List of all members
dnn::layer Class Reference

Layer base class. More...

#include <dnn_layer_base.h>

Inheritance diagram for dnn::layer:
dnn::layer_act dnn::layer_conv dnn::layer_cost dnn::layer_dense dnn::layer_drop dnn::layer_input dnn::layer_norm dnn::layer_pool

Public Member Functions

 layer (void)
 Layer constructor. More...
 
 ~layer ()
 
virtual void init (void)
 Initialize layer. More...
 
virtual void upd_buf_size (arma::uword nmb)
 Update layer buffer sizes. More...
 
virtual void prop (void)
 Forward propagation. More...
 
virtual void prop_mb (void)
 Forward propagation - mini batch. More...
 
virtual void backprop (void)
 Back propagation. More...
 
virtual void update (void)
 Parameter update. More...
 
virtual void disp (void)
 Display info about layer. More...
 
virtual void enable_training (void)
 Enable training of layer. More...
 
virtual void disable_training (void)
 Disable training of layer. More...
 
virtual void enable_bias (void)
 Enable bias term in layer. More...
 
virtual void disable_bias (void)
 Disable bias term in layer. More...
 
virtual arma::Mat< DNN_Dtypeget_B (void)
 Get bias. More...
 
virtual arma::Cube< DNN_Dtypeget_W (void)
 Get weights. More...
 
virtual void set_B (arma::Mat< DNN_Dtype > &b)
 Set bias. More...
 
virtual void set_W (arma::Cube< DNN_Dtype > &w)
 Set weights. More...
 
virtual arma::uword get_nrof_params (void)
 Get number of trainable parameters. More...
 
virtual void set_phase (PHASE p)
 Set phase/state. More...
 
virtual void set_left (layer *lptr)
 Set pointer to left layer. More...
 
virtual void set_right (layer *rptr)
 Set pointer to right layer. More...
 
virtual void set_id (const std::string str)
 Set layer id string. More...
 
virtual std::string get_id (void)
 Get layer id string. More...
 
virtual void set_type (const std::string str)
 Set layer type string. More...
 
virtual std::string get_type (void)
 Get layer type string. More...
 
virtual void set_ix (const arma::uword n)
 Set layer index. More...
 
virtual arma::uword get_ix (void)
 Get layer index. More...
 
virtual void set_batch_size (const arma::uword n)
 Set mini batch size. More...
 
virtual arma::uword get_batch_size (void)
 Get mini batch size. More...
 
virtual void set_Y1 (arma::Mat< DNN_Dtype > &y)
 Set output buffer. More...
 
virtual void set_Y (arma::Mat< DNN_Dtype > &y)
 Set output buffer - mini batch. More...
 
virtual void set_Dleft (arma::Mat< DNN_Dtype > &d)
 Set error output buffer - mini batch. More...
 
virtual void set_rows_in (arma::uword r)
 Set input buffer row size. More...
 
virtual arma::uword get_nrof_rows (void)
 Get output buffer row size. More...
 
virtual void set_cols_in (arma::uword c)
 Set input buffer column size. More...
 
virtual arma::uword get_nrof_cols (void)
 Get output buffer column size. More...
 
virtual void set_channels_in (arma::uword l)
 Set input buffer channel/layer size. More...
 
virtual arma::uword get_nrof_channels (void)
 Get output buffer channel/layer size. More...
 
virtual void set_opt_alg (opt &alg_class)
 Set pointer to optimizer class. More...
 
virtual optget_opt_alg (void)
 Get pointer to optimizer class. More...
 
virtual arma::uword get_nrof_inputs (void)
 Get total number of layer inputs. More...
 
virtual arma::uword get_nrof_outputs (void)
 Get total number of layer outputs. More...
 
virtual arma::Mat< DNN_Dtypeget_Y1 (void)
 Get output buffer. More...
 
virtual arma::Mat< DNN_Dtype > * get_Y1_ptr (void)
 Get output buffer pointer. More...
 
virtual DNN_Dtypeget_Y1_memptr (void)
 Get output buffer memory pointer. More...
 
virtual arma::Mat< DNN_Dtypeget_Y (void)
 Get output buffer - mini batch. More...
 
virtual arma::Mat< DNN_Dtype > * get_Y_ptr (void)
 Get output buffer pointer - mini batch. More...
 
virtual DNN_Dtypeget_Y_memptr (void)
 Get output buffer memory pointer - mini batch. More...
 
virtual DNN_Dtypeget_Y_colptr (const arma::uword n)
 Get output buffer memory column pointer - mini batch. More...
 
virtual arma::Mat< DNN_Dtypeget_Dleft ()
 Get error buffer - mini batch. More...
 
virtual arma::Mat< DNN_Dtype > * get_Dleft_ptr (void)
 Get error buffer pointer - mini batch. More...
 
virtual DNN_Dtypeget_Dleft_memptr (void)
 Get error buffer memory pointer - mini batch. More...
 
virtual DNN_Dtypeget_Dleft_colptr (const arma::uword n)
 Get error buffer memory column pointer - mini batch. More...
 
virtual void save_layer_param (std::string name, PARAM_FORMAT f=PARAM_FORMAT::ASCII)
 Save layer weight and bias. More...
 
virtual void load_layer_param (std::string name, PARAM_FORMAT f=PARAM_FORMAT::AUTO)
 Load layer weight and bias. More...
 
template<typename T >
void init_weights (T &w, arma::uword fan_in, arma::uword fan_out, INIT_W_ALG alg, INIT_W_DIST dist)
 Initiate weights. More...
 
DNN_Dtype sigmoid (const DNN_Dtype x)
 Sigmoid function - scalar. More...
 
arma::Mat< DNN_Dtypesigmoid (const arma::Mat< DNN_Dtype > &x)
 Sigmoid function - matrix. More...
 
arma::Mat< DNN_Dtypesoftmax (const arma::Mat< DNN_Dtype > &x)
 Softmax function - matrix. More...
 

Protected Attributes

layerleft
 Pointer to previous layer. More...
 
layerright
 Pointer to next layer. More...
 
std::string id
 Layer id string. More...
 
std::string type
 Layer type string. More...
 
arma::uword layer_ix
 Layer index [0..]. More...
 
bool train_par
 Enable training. More...
 
bool add_bias
 Enable bias. More...
 
optopt_alg
 Pointer to optimizer. More...
 
PHASE phase
 Active state/phase. More...
 
arma::uword N_batch
 Mini batch size. More...
 
arma::uword N_rows_left
 Input rows. More...
 
arma::uword N_cols_left
 Input cols. More...
 
arma::uword N_channels_left
 Input channels, number of filters. More...
 
arma::uword N_rows_right
 Output rows. More...
 
arma::uword N_cols_right
 Output cols. More...
 
arma::uword N_channels_right
 Output channels, number of filters. More...
 
arma::uword N_left
 Total size left. More...
 
arma::uword N_right
 Total size right. More...
 
arma::Mat< DNN_DtypeY
 Output buffer mini batch [N_right,N_batch]. More...
 
arma::Mat< DNN_DtypeY1
 Output buffer [N_right,1]. More...
 
arma::Mat< DNN_DtypeDleft
 Error buffer [N_left,N_batch]. More...
 
arma::Cube< DNN_DtypeW
 Weights. More...
 
arma::Mat< DNN_DtypeB
 Bias. More...
 

Friends

std::ostream & operator<< (std::ostream &os, layer &lay)
 operator << More...
 

Detailed Description

Layer base class.

Layer base class

Definition at line 31 of file dnn_layer_base.h.

Constructor & Destructor Documentation

◆ layer()

dnn::layer::layer ( void  )
inline

Layer constructor.

Initializes layer parameters to a known default state

Definition at line 68 of file dnn_layer_base.h.

◆ ~layer()

dnn::layer::~layer ( )
inline

Definition at line 90 of file dnn_layer_base.h.

Member Function Documentation

◆ backprop()

virtual void dnn::layer::backprop ( void  )
inlinevirtual

◆ disable_bias()

virtual void dnn::layer::disable_bias ( void  )
inlinevirtual

Disable bias term in layer.

Definition at line 213 of file dnn_layer_base.h.

◆ disable_training()

virtual void dnn::layer::disable_training ( void  )
inlinevirtual

Disable training of layer.

Definition at line 199 of file dnn_layer_base.h.

◆ disp()

virtual void dnn::layer::disp ( void  )
inlinevirtual

◆ enable_bias()

virtual void dnn::layer::enable_bias ( void  )
inlinevirtual

Enable bias term in layer.

Definition at line 206 of file dnn_layer_base.h.

◆ enable_training()

virtual void dnn::layer::enable_training ( void  )
inlinevirtual

Enable training of layer.

Definition at line 192 of file dnn_layer_base.h.

◆ get_B()

virtual arma::Mat<DNN_Dtype> dnn::layer::get_B ( void  )
inlinevirtual

Get bias.

Definition at line 220 of file dnn_layer_base.h.

◆ get_batch_size()

virtual arma::uword dnn::layer::get_batch_size ( void  )
inlinevirtual

Get mini batch size.

Definition at line 326 of file dnn_layer_base.h.

◆ get_Dleft()

virtual arma::Mat<DNN_Dtype> dnn::layer::get_Dleft ( )
inlinevirtual

Get error buffer - mini batch.

Definition at line 477 of file dnn_layer_base.h.

◆ get_Dleft_colptr()

virtual DNN_Dtype* dnn::layer::get_Dleft_colptr ( const arma::uword  n)
inlinevirtual

Get error buffer memory column pointer - mini batch.

Parameters
[in]nColumn

Definition at line 499 of file dnn_layer_base.h.

◆ get_Dleft_memptr()

virtual DNN_Dtype* dnn::layer::get_Dleft_memptr ( void  )
inlinevirtual

Get error buffer memory pointer - mini batch.

Definition at line 491 of file dnn_layer_base.h.

◆ get_Dleft_ptr()

virtual arma::Mat<DNN_Dtype>* dnn::layer::get_Dleft_ptr ( void  )
inlinevirtual

Get error buffer pointer - mini batch.

Definition at line 484 of file dnn_layer_base.h.

◆ get_id()

virtual std::string dnn::layer::get_id ( void  )
inlinevirtual

Get layer id string.

Definition at line 283 of file dnn_layer_base.h.

◆ get_ix()

virtual arma::uword dnn::layer::get_ix ( void  )
inlinevirtual

Get layer index.

Definition at line 311 of file dnn_layer_base.h.

◆ get_nrof_channels()

virtual arma::uword dnn::layer::get_nrof_channels ( void  )
inlinevirtual

Get output buffer channel/layer size.

Definition at line 389 of file dnn_layer_base.h.

◆ get_nrof_cols()

virtual arma::uword dnn::layer::get_nrof_cols ( void  )
inlinevirtual

Get output buffer column size.

Definition at line 375 of file dnn_layer_base.h.

◆ get_nrof_inputs()

virtual arma::uword dnn::layer::get_nrof_inputs ( void  )
inlinevirtual

Get total number of layer inputs.

Definition at line 410 of file dnn_layer_base.h.

◆ get_nrof_outputs()

virtual arma::uword dnn::layer::get_nrof_outputs ( void  )
inlinevirtual

Get total number of layer outputs.

Definition at line 420 of file dnn_layer_base.h.

◆ get_nrof_params()

virtual arma::uword dnn::layer::get_nrof_params ( void  )
inlinevirtual

Get number of trainable parameters.

Reimplemented in dnn::layer_conv, dnn::layer_dense, and dnn::layer_norm.

Definition at line 248 of file dnn_layer_base.h.

◆ get_nrof_rows()

virtual arma::uword dnn::layer::get_nrof_rows ( void  )
inlinevirtual

Get output buffer row size.

Definition at line 361 of file dnn_layer_base.h.

◆ get_opt_alg()

virtual opt* dnn::layer::get_opt_alg ( void  )
inlinevirtual

Get pointer to optimizer class.

Definition at line 403 of file dnn_layer_base.h.

◆ get_type()

virtual std::string dnn::layer::get_type ( void  )
inlinevirtual

Get layer type string.

Definition at line 297 of file dnn_layer_base.h.

◆ get_W()

virtual arma::Cube<DNN_Dtype> dnn::layer::get_W ( void  )
inlinevirtual

Get weights.

Definition at line 227 of file dnn_layer_base.h.

◆ get_Y()

virtual arma::Mat<DNN_Dtype> dnn::layer::get_Y ( void  )
inlinevirtual

Get output buffer - mini batch.

Definition at line 448 of file dnn_layer_base.h.

◆ get_Y1()

virtual arma::Mat<DNN_Dtype> dnn::layer::get_Y1 ( void  )
inlinevirtual

Get output buffer.

Definition at line 427 of file dnn_layer_base.h.

◆ get_Y1_memptr()

virtual DNN_Dtype* dnn::layer::get_Y1_memptr ( void  )
inlinevirtual

Get output buffer memory pointer.

Definition at line 441 of file dnn_layer_base.h.

◆ get_Y1_ptr()

virtual arma::Mat<DNN_Dtype>* dnn::layer::get_Y1_ptr ( void  )
inlinevirtual

Get output buffer pointer.

Definition at line 434 of file dnn_layer_base.h.

◆ get_Y_colptr()

virtual DNN_Dtype* dnn::layer::get_Y_colptr ( const arma::uword  n)
inlinevirtual

Get output buffer memory column pointer - mini batch.

Parameters
[in]nColumn

Definition at line 470 of file dnn_layer_base.h.

◆ get_Y_memptr()

virtual DNN_Dtype* dnn::layer::get_Y_memptr ( void  )
inlinevirtual

Get output buffer memory pointer - mini batch.

Definition at line 462 of file dnn_layer_base.h.

◆ get_Y_ptr()

virtual arma::Mat<DNN_Dtype>* dnn::layer::get_Y_ptr ( void  )
inlinevirtual

Get output buffer pointer - mini batch.

Definition at line 455 of file dnn_layer_base.h.

◆ init()

virtual void dnn::layer::init ( void  )
inlinevirtual

Initialize layer.

Initializes input buffer dimensions

Reimplemented in dnn::layer_conv, dnn::layer_dense, dnn::layer_input, dnn::layer_drop, dnn::layer_pool, dnn::layer_cost, dnn::layer_norm, and dnn::layer_act.

Definition at line 97 of file dnn_layer_base.h.

◆ init_weights()

template<typename T >
void dnn::layer::init_weights ( T &  w,
arma::uword  fan_in,
arma::uword  fan_out,
INIT_W_ALG  alg,
INIT_W_DIST  dist 
)
inline

Initiate weights.

Parameters
[in]fan_inNumber of layer input nodes
[in]fan_outNumber of layer output nodes
[in]algAlgorithm selection
[in]distRandom distribution selection [normal|uniform]
[out]wweight data

Initiate weights random or in a predictive way

Definition at line 572 of file dnn_layer_base.h.

◆ load_layer_param()

virtual void dnn::layer::load_layer_param ( std::string  name,
PARAM_FORMAT  f = PARAM_FORMAT::AUTO 
)
inlinevirtual

Load layer weight and bias.

Parameters
[in]namefilename
[in]ffile format

Loads weights and bias for the layer in an ASCII or binary format

Definition at line 535 of file dnn_layer_base.h.

◆ prop()

virtual void dnn::layer::prop ( void  )
inlinevirtual

◆ prop_mb()

virtual void dnn::layer::prop_mb ( void  )
inlinevirtual

◆ save_layer_param()

virtual void dnn::layer::save_layer_param ( std::string  name,
PARAM_FORMAT  f = PARAM_FORMAT::ASCII 
)
inlinevirtual

Save layer weight and bias.

Parameters
[in]namefilename
[in]ffile format

Saves weights and bias for the layer in an ASCII or binary format

Definition at line 511 of file dnn_layer_base.h.

◆ set_B()

virtual void dnn::layer::set_B ( arma::Mat< DNN_Dtype > &  b)
inlinevirtual

Set bias.

Definition at line 234 of file dnn_layer_base.h.

◆ set_batch_size()

virtual void dnn::layer::set_batch_size ( const arma::uword  n)
inlinevirtual

Set mini batch size.

Definition at line 318 of file dnn_layer_base.h.

◆ set_channels_in()

virtual void dnn::layer::set_channels_in ( arma::uword  l)
inlinevirtual

Set input buffer channel/layer size.

Definition at line 382 of file dnn_layer_base.h.

◆ set_cols_in()

virtual void dnn::layer::set_cols_in ( arma::uword  c)
inlinevirtual

Set input buffer column size.

Definition at line 368 of file dnn_layer_base.h.

◆ set_Dleft()

virtual void dnn::layer::set_Dleft ( arma::Mat< DNN_Dtype > &  d)
inlinevirtual

Set error output buffer - mini batch.

Definition at line 347 of file dnn_layer_base.h.

◆ set_id()

virtual void dnn::layer::set_id ( const std::string  str)
inlinevirtual

Set layer id string.

Definition at line 276 of file dnn_layer_base.h.

◆ set_ix()

virtual void dnn::layer::set_ix ( const arma::uword  n)
inlinevirtual

Set layer index.

Definition at line 304 of file dnn_layer_base.h.

◆ set_left()

virtual void dnn::layer::set_left ( layer lptr)
inlinevirtual

Set pointer to left layer.

Definition at line 262 of file dnn_layer_base.h.

◆ set_opt_alg()

virtual void dnn::layer::set_opt_alg ( opt alg_class)
inlinevirtual

Set pointer to optimizer class.

Definition at line 396 of file dnn_layer_base.h.

◆ set_phase()

virtual void dnn::layer::set_phase ( PHASE  p)
inlinevirtual

Set phase/state.

Definition at line 255 of file dnn_layer_base.h.

◆ set_right()

virtual void dnn::layer::set_right ( layer rptr)
inlinevirtual

Set pointer to right layer.

Definition at line 269 of file dnn_layer_base.h.

◆ set_rows_in()

virtual void dnn::layer::set_rows_in ( arma::uword  r)
inlinevirtual

Set input buffer row size.

Definition at line 354 of file dnn_layer_base.h.

◆ set_type()

virtual void dnn::layer::set_type ( const std::string  str)
inlinevirtual

Set layer type string.

Definition at line 290 of file dnn_layer_base.h.

◆ set_W()

virtual void dnn::layer::set_W ( arma::Cube< DNN_Dtype > &  w)
inlinevirtual

Set weights.

Definition at line 241 of file dnn_layer_base.h.

◆ set_Y()

virtual void dnn::layer::set_Y ( arma::Mat< DNN_Dtype > &  y)
inlinevirtual

Set output buffer - mini batch.

Definition at line 340 of file dnn_layer_base.h.

◆ set_Y1()

virtual void dnn::layer::set_Y1 ( arma::Mat< DNN_Dtype > &  y)
inlinevirtual

Set output buffer.

Definition at line 333 of file dnn_layer_base.h.

◆ sigmoid() [1/2]

DNN_Dtype dnn::layer::sigmoid ( const DNN_Dtype  x)
inline

Sigmoid function - scalar.

Parameters
[in]xScalar input

Definition at line 600 of file dnn_layer_base.h.

◆ sigmoid() [2/2]

arma::Mat<DNN_Dtype> dnn::layer::sigmoid ( const arma::Mat< DNN_Dtype > &  x)
inline

Sigmoid function - matrix.

Parameters
[in]xMatrix input

Definition at line 608 of file dnn_layer_base.h.

◆ softmax()

arma::Mat<DNN_Dtype> dnn::layer::softmax ( const arma::Mat< DNN_Dtype > &  x)
inline

Softmax function - matrix.

Parameters
[in]xMatrix input

Definition at line 616 of file dnn_layer_base.h.

◆ upd_buf_size()

virtual void dnn::layer::upd_buf_size ( arma::uword  nmb)
inlinevirtual

Update layer buffer sizes.

Initializes and clears output buffer dimensions

Reimplemented in dnn::layer_conv, dnn::layer_norm, dnn::layer_drop, dnn::layer_cost, and dnn::layer_pool.

Definition at line 110 of file dnn_layer_base.h.

◆ update()

virtual void dnn::layer::update ( void  )
inlinevirtual

Parameter update.

Reimplemented in dnn::layer_conv, dnn::layer_norm, and dnn::layer_dense.

Definition at line 178 of file dnn_layer_base.h.

Friends And Related Function Documentation

◆ operator<<

std::ostream& operator<< ( std::ostream &  os,
layer lay 
)
friend

operator <<

Overloads << operator to print layer info

Definition at line 123 of file dnn_layer_base.h.

Member Data Documentation

◆ add_bias

bool dnn::layer::add_bias
protected

Enable bias.

Definition at line 42 of file dnn_layer_base.h.

◆ B

arma::Mat<DNN_Dtype> dnn::layer::B
protected

Bias.

Definition at line 60 of file dnn_layer_base.h.

◆ Dleft

arma::Mat<DNN_Dtype> dnn::layer::Dleft
protected

Error buffer [N_left,N_batch].

Definition at line 58 of file dnn_layer_base.h.

◆ id

std::string dnn::layer::id
protected

Layer id string.

Definition at line 38 of file dnn_layer_base.h.

◆ layer_ix

arma::uword dnn::layer::layer_ix
protected

Layer index [0..].

Definition at line 40 of file dnn_layer_base.h.

◆ left

layer* dnn::layer::left
protected

Pointer to previous layer.

Definition at line 35 of file dnn_layer_base.h.

◆ N_batch

arma::uword dnn::layer::N_batch
protected

Mini batch size.

Definition at line 46 of file dnn_layer_base.h.

◆ N_channels_left

arma::uword dnn::layer::N_channels_left
protected

Input channels, number of filters.

Definition at line 49 of file dnn_layer_base.h.

◆ N_channels_right

arma::uword dnn::layer::N_channels_right
protected

Output channels, number of filters.

Definition at line 52 of file dnn_layer_base.h.

◆ N_cols_left

arma::uword dnn::layer::N_cols_left
protected

Input cols.

Definition at line 48 of file dnn_layer_base.h.

◆ N_cols_right

arma::uword dnn::layer::N_cols_right
protected

Output cols.

Definition at line 51 of file dnn_layer_base.h.

◆ N_left

arma::uword dnn::layer::N_left
protected

Total size left.

Definition at line 53 of file dnn_layer_base.h.

◆ N_right

arma::uword dnn::layer::N_right
protected

Total size right.

Definition at line 54 of file dnn_layer_base.h.

◆ N_rows_left

arma::uword dnn::layer::N_rows_left
protected

Input rows.

Definition at line 47 of file dnn_layer_base.h.

◆ N_rows_right

arma::uword dnn::layer::N_rows_right
protected

Output rows.

Definition at line 50 of file dnn_layer_base.h.

◆ opt_alg

opt* dnn::layer::opt_alg
protected

Pointer to optimizer.

Definition at line 43 of file dnn_layer_base.h.

◆ phase

PHASE dnn::layer::phase
protected

Active state/phase.

Definition at line 44 of file dnn_layer_base.h.

◆ right

layer* dnn::layer::right
protected

Pointer to next layer.

Definition at line 36 of file dnn_layer_base.h.

◆ train_par

bool dnn::layer::train_par
protected

Enable training.

Definition at line 41 of file dnn_layer_base.h.

◆ type

std::string dnn::layer::type
protected

Layer type string.

Definition at line 39 of file dnn_layer_base.h.

◆ W

arma::Cube<DNN_Dtype> dnn::layer::W
protected

Weights.

Definition at line 59 of file dnn_layer_base.h.

◆ Y

arma::Mat<DNN_Dtype> dnn::layer::Y
protected

Output buffer mini batch [N_right,N_batch].

Definition at line 56 of file dnn_layer_base.h.

◆ Y1

arma::Mat<DNN_Dtype> dnn::layer::Y1
protected

Output buffer [N_right,1].

Definition at line 57 of file dnn_layer_base.h.


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