DaNNet
|
Layer base class. More...
#include <dnn_layer_base.h>
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_Dtype > | get_B (void) |
Get bias. More... | |
virtual arma::Cube< DNN_Dtype > | get_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 opt * | get_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_Dtype > | get_Y1 (void) |
Get output buffer. More... | |
virtual arma::Mat< DNN_Dtype > * | get_Y1_ptr (void) |
Get output buffer pointer. More... | |
virtual DNN_Dtype * | get_Y1_memptr (void) |
Get output buffer memory pointer. More... | |
virtual arma::Mat< DNN_Dtype > | get_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_Dtype * | get_Y_memptr (void) |
Get output buffer memory pointer - mini batch. More... | |
virtual DNN_Dtype * | get_Y_colptr (const arma::uword n) |
Get output buffer memory column pointer - mini batch. More... | |
virtual arma::Mat< DNN_Dtype > | get_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_Dtype * | get_Dleft_memptr (void) |
Get error buffer memory pointer - mini batch. More... | |
virtual DNN_Dtype * | get_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_Dtype > | sigmoid (const arma::Mat< DNN_Dtype > &x) |
Sigmoid function - matrix. More... | |
arma::Mat< DNN_Dtype > | softmax (const arma::Mat< DNN_Dtype > &x) |
Softmax function - matrix. More... | |
Protected Attributes | |
layer * | left |
Pointer to previous layer. More... | |
layer * | right |
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... | |
opt * | opt_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_Dtype > | Y |
Output buffer mini batch [N_right,N_batch]. More... | |
arma::Mat< DNN_Dtype > | Y1 |
Output buffer [N_right,1]. More... | |
arma::Mat< DNN_Dtype > | Dleft |
Error buffer [N_left,N_batch]. More... | |
arma::Cube< DNN_Dtype > | W |
Weights. More... | |
arma::Mat< DNN_Dtype > | B |
Bias. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &os, layer &lay) |
operator << More... | |
|
inline |
Layer constructor.
Initializes layer parameters to a known default state
Definition at line 68 of file dnn_layer_base.h.
|
inline |
Definition at line 90 of file dnn_layer_base.h.
|
inlinevirtual |
Back propagation.
Reimplemented in dnn::cost_CE_softmax, dnn::cost_CE_sigmoid, dnn::act_softmax, dnn::act_tanh, dnn::cost_CE, dnn::layer_conv, dnn::pool_average, dnn::act_LReLU, dnn::cost_MSE_sigmoid, dnn::pool_max, dnn::act_ReLU, dnn::cost_MSE, dnn::act_softplus, dnn::layer_norm, dnn::layer_cost, dnn::act_sigmoid, dnn::layer_drop, dnn::layer_dense, dnn::layer_pool, and dnn::layer_act.
Definition at line 171 of file dnn_layer_base.h.
|
inlinevirtual |
Disable bias term in layer.
Definition at line 213 of file dnn_layer_base.h.
|
inlinevirtual |
Disable training of layer.
Definition at line 199 of file dnn_layer_base.h.
|
inlinevirtual |
Display info about layer.
Reimplemented in dnn::cost_CE_softmax, dnn::cost_CE_sigmoid, dnn::cost_CE, dnn::cost_MSE_sigmoid, dnn::layer_conv, dnn::cost_MSE, dnn::layer_norm, dnn::layer_cost, dnn::layer_dense, dnn::layer_input, dnn::layer_drop, dnn::layer_pool, and dnn::layer_act.
Definition at line 184 of file dnn_layer_base.h.
|
inlinevirtual |
Enable bias term in layer.
Definition at line 206 of file dnn_layer_base.h.
|
inlinevirtual |
Enable training of layer.
Definition at line 192 of file dnn_layer_base.h.
|
inlinevirtual |
Get bias.
Definition at line 220 of file dnn_layer_base.h.
|
inlinevirtual |
Get mini batch size.
Definition at line 326 of file dnn_layer_base.h.
|
inlinevirtual |
Get error buffer - mini batch.
Definition at line 477 of file dnn_layer_base.h.
|
inlinevirtual |
Get error buffer memory column pointer - mini batch.
[in] | n | Column |
Definition at line 499 of file dnn_layer_base.h.
|
inlinevirtual |
Get error buffer memory pointer - mini batch.
Definition at line 491 of file dnn_layer_base.h.
|
inlinevirtual |
Get error buffer pointer - mini batch.
Definition at line 484 of file dnn_layer_base.h.
|
inlinevirtual |
Get layer id string.
Definition at line 283 of file dnn_layer_base.h.
|
inlinevirtual |
Get layer index.
Definition at line 311 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer channel/layer size.
Definition at line 389 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer column size.
Definition at line 375 of file dnn_layer_base.h.
|
inlinevirtual |
Get total number of layer inputs.
Definition at line 410 of file dnn_layer_base.h.
|
inlinevirtual |
Get total number of layer outputs.
Definition at line 420 of file dnn_layer_base.h.
|
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.
|
inlinevirtual |
Get output buffer row size.
Definition at line 361 of file dnn_layer_base.h.
|
inlinevirtual |
Get pointer to optimizer class.
Definition at line 403 of file dnn_layer_base.h.
|
inlinevirtual |
Get layer type string.
Definition at line 297 of file dnn_layer_base.h.
|
inlinevirtual |
Get weights.
Definition at line 227 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer - mini batch.
Definition at line 448 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer.
Definition at line 427 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer memory pointer.
Definition at line 441 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer pointer.
Definition at line 434 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer memory column pointer - mini batch.
[in] | n | Column |
Definition at line 470 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer memory pointer - mini batch.
Definition at line 462 of file dnn_layer_base.h.
|
inlinevirtual |
Get output buffer pointer - mini batch.
Definition at line 455 of file dnn_layer_base.h.
|
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.
|
inline |
Initiate weights.
[in] | fan_in | Number of layer input nodes |
[in] | fan_out | Number of layer output nodes |
[in] | alg | Algorithm selection |
[in] | dist | Random distribution selection [normal|uniform] |
[out] | w | weight data |
Initiate weights random or in a predictive way
Definition at line 572 of file dnn_layer_base.h.
|
inlinevirtual |
Load layer weight and bias.
[in] | name | filename |
[in] | f | file format |
Loads weights and bias for the layer in an ASCII or binary format
Definition at line 535 of file dnn_layer_base.h.
|
inlinevirtual |
Forward propagation.
Reimplemented in dnn::cost_CE_softmax, dnn::cost_CE_sigmoid, dnn::act_softmax, dnn::act_tanh, dnn::cost_CE, dnn::layer_conv, dnn::pool_average, dnn::act_LReLU, dnn::cost_MSE_sigmoid, dnn::act_ReLU, dnn::pool_max, dnn::act_softplus, dnn::layer_norm, dnn::layer_cost, dnn::act_sigmoid, dnn::layer_input, dnn::layer_dense, dnn::layer_pool, and dnn::layer_act.
Definition at line 157 of file dnn_layer_base.h.
|
inlinevirtual |
Forward propagation - mini batch.
Reimplemented in dnn::cost_CE_softmax, dnn::cost_CE_sigmoid, dnn::act_softmax, dnn::act_tanh, dnn::cost_CE, dnn::layer_conv, dnn::pool_average, dnn::act_LReLU, dnn::cost_MSE_sigmoid, dnn::act_ReLU, dnn::pool_max, dnn::act_softplus, dnn::layer_norm, dnn::layer_cost, dnn::act_sigmoid, dnn::layer_input, dnn::layer_dense, dnn::layer_drop, dnn::layer_pool, and dnn::layer_act.
Definition at line 164 of file dnn_layer_base.h.
|
inlinevirtual |
Save layer weight and bias.
[in] | name | filename |
[in] | f | file format |
Saves weights and bias for the layer in an ASCII or binary format
Definition at line 511 of file dnn_layer_base.h.
|
inlinevirtual |
Set bias.
Definition at line 234 of file dnn_layer_base.h.
|
inlinevirtual |
Set mini batch size.
Definition at line 318 of file dnn_layer_base.h.
|
inlinevirtual |
Set input buffer channel/layer size.
Definition at line 382 of file dnn_layer_base.h.
|
inlinevirtual |
Set input buffer column size.
Definition at line 368 of file dnn_layer_base.h.
|
inlinevirtual |
Set error output buffer - mini batch.
Definition at line 347 of file dnn_layer_base.h.
|
inlinevirtual |
Set layer id string.
Definition at line 276 of file dnn_layer_base.h.
|
inlinevirtual |
Set layer index.
Definition at line 304 of file dnn_layer_base.h.
|
inlinevirtual |
Set pointer to left layer.
Definition at line 262 of file dnn_layer_base.h.
|
inlinevirtual |
Set pointer to optimizer class.
Definition at line 396 of file dnn_layer_base.h.
|
inlinevirtual |
Set phase/state.
Definition at line 255 of file dnn_layer_base.h.
|
inlinevirtual |
Set pointer to right layer.
Definition at line 269 of file dnn_layer_base.h.
|
inlinevirtual |
Set input buffer row size.
Definition at line 354 of file dnn_layer_base.h.
|
inlinevirtual |
Set layer type string.
Definition at line 290 of file dnn_layer_base.h.
|
inlinevirtual |
Set weights.
Definition at line 241 of file dnn_layer_base.h.
|
inlinevirtual |
Set output buffer - mini batch.
Definition at line 340 of file dnn_layer_base.h.
|
inlinevirtual |
Set output buffer.
Definition at line 333 of file dnn_layer_base.h.
Sigmoid function - scalar.
[in] | x | Scalar input |
Definition at line 600 of file dnn_layer_base.h.
Sigmoid function - matrix.
[in] | x | Matrix input |
Definition at line 608 of file dnn_layer_base.h.
Softmax function - matrix.
[in] | x | Matrix input |
Definition at line 616 of file dnn_layer_base.h.
|
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.
|
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.
|
friend |
operator <<
Overloads << operator to print layer info
Definition at line 123 of file dnn_layer_base.h.
|
protected |
Enable bias.
Definition at line 42 of file dnn_layer_base.h.
|
protected |
Bias.
Definition at line 60 of file dnn_layer_base.h.
|
protected |
Error buffer [N_left,N_batch].
Definition at line 58 of file dnn_layer_base.h.
|
protected |
Layer id string.
Definition at line 38 of file dnn_layer_base.h.
|
protected |
Layer index [0..].
Definition at line 40 of file dnn_layer_base.h.
|
protected |
Pointer to previous layer.
Definition at line 35 of file dnn_layer_base.h.
|
protected |
Mini batch size.
Definition at line 46 of file dnn_layer_base.h.
|
protected |
Input channels, number of filters.
Definition at line 49 of file dnn_layer_base.h.
|
protected |
Output channels, number of filters.
Definition at line 52 of file dnn_layer_base.h.
|
protected |
Input cols.
Definition at line 48 of file dnn_layer_base.h.
|
protected |
Output cols.
Definition at line 51 of file dnn_layer_base.h.
|
protected |
Total size left.
Definition at line 53 of file dnn_layer_base.h.
|
protected |
Total size right.
Definition at line 54 of file dnn_layer_base.h.
|
protected |
Input rows.
Definition at line 47 of file dnn_layer_base.h.
|
protected |
Output rows.
Definition at line 50 of file dnn_layer_base.h.
|
protected |
Pointer to optimizer.
Definition at line 43 of file dnn_layer_base.h.
|
protected |
Active state/phase.
Definition at line 44 of file dnn_layer_base.h.
|
protected |
Pointer to next layer.
Definition at line 36 of file dnn_layer_base.h.
|
protected |
Enable training.
Definition at line 41 of file dnn_layer_base.h.
|
protected |
Layer type string.
Definition at line 39 of file dnn_layer_base.h.
|
protected |
Weights.
Definition at line 59 of file dnn_layer_base.h.
|
protected |
Output buffer mini batch [N_right,N_batch].
Definition at line 56 of file dnn_layer_base.h.
|
protected |
Output buffer [N_right,1].
Definition at line 57 of file dnn_layer_base.h.