ConvNet
1.0
A GPU-based C++ implementation of Convolutional Neural Nets
|
This class is intended to be used as a base class for implementing edges. More...
#include <edge.h>
Public Member Functions | |
Edge (const config::Edge &edge_config) | |
Instatntiate an Edge from the config. More... | |
virtual void | AllocateMemory (bool fprop_only) |
Allocate memory for the model. More... | |
virtual void | Initialize () |
Initialize the weights and biases. More... | |
virtual void | SaveParameters (hid_t file) |
Write the weights and biases in an hdf5 file. More... | |
virtual void | LoadParameters (hid_t file) |
Load the weights and biases from an hdf5 file. More... | |
virtual void | InsertPolyak () |
virtual void | BackupCurrent () |
virtual void | LoadCurrentOnGPU () |
virtual void | LoadPolyakOnGPU () |
virtual float | GetRMSWeight () |
Returns the root mean square weight value. More... | |
virtual void | ReduceLearningRate (float factor) |
Reduce the learning rate by factor. More... | |
virtual bool | HasNoParameters () const |
Returns whether the edge has any parameters. More... | |
virtual int | GetNumModules () const |
Returns the number of modules. More... | |
virtual void | DisplayWeights () |
Displays the weights. More... | |
virtual void | DisplayWeightStats () |
Displays the statistics of the weights. More... | |
virtual void | SetTiedTo (Edge *e) |
Sets the edge to be tied to another edge. More... | |
virtual void | ComputeUp (Matrix &input, Matrix &output, bool overwrite)=0 |
Computes the output layer state given the input. More... | |
virtual void | ComputeDown (Matrix &deriv_output, Matrix &input, Matrix &output, Matrix &deriv_input, bool overwrite)=0 |
Computes the derivative w.r.t the inputs of this edge given the derivative w.r.t the outputs of this edge. More... | |
virtual void | ComputeOuter (Matrix &input, Matrix &deriv_output) |
Computes the gradient for the weights and biases. More... | |
virtual void | UpdateWeights () |
Update the weights. More... | |
virtual void | SetImageSize (int image_size) |
Set the spatial size of the input to this edge. More... | |
bool | IsBackPropBlocked () const |
Returns whether back prop is blocked through this edge. More... | |
void | SetSource (Layer *source) |
void | SetDest (Layer *dest) |
Layer * | GetSource () |
Layer * | GetDest () |
const string & | GetSourceName () |
const string & | GetDestName () |
const string & | GetName () |
void | SetInputChannels (int a) |
Set the number of input channels. More... | |
void | SetOutputChannels (int a) |
Set the number of output channels. More... | |
void | SetMark () |
bool | HasMark () |
string | GetTiedEdgeName () |
bool | IsTied () |
int | GetGPUId () const |
void | ComputeStart (Matrix &mat) |
void | ComputeEnd (Matrix &mat) |
Static Public Member Functions | |
static Edge * | ChooseEdgeClass (const config::Edge &edge_config) |
Selects the appropriate derived class for the edge config. More... | |
Protected Attributes | |
Layer * | source_ |
Layer * | dest_ |
The source layer for this edge. More... | |
const string | source_node_ |
The destination layer for this edge. More... | |
const string | dest_node_ |
const string | name_ |
const string | tied_edge_name_ |
Edge * | tied_edge_ |
int | num_input_channels_ |
int | num_output_channels_ |
int | image_size_ |
int | num_modules_ |
bool | mark_ |
const bool | block_backprop_ |
A marker. More... | |
const bool | is_tied_ |
ImageDisplayer * | img_display_ |
const int | gpu_id_ |
This class is intended to be used as a base class for implementing edges.
This is an abstract class - ComputeUp and ComputeDown methods must be implemented by derived classes.
Edge::Edge | ( | const config::Edge & | edge_config | ) |
Instatntiate an Edge from the config.
|
virtual |
Allocate memory for the model.
fprop_only | If true, does not allocate memory needed for optimization. |
Reimplemented in ResponseNormEdge, ConvOneToOneEdge, MaxPoolEdge, ConvEdge, FCEdge, and LocalEdge.
|
static |
Selects the appropriate derived class for the edge config.
|
pure virtual |
Computes the derivative w.r.t the inputs of this edge given the derivative w.r.t the outputs of this edge.
deriv_output | Derivative w.r.t outputs of this edge.(In) |
input | The input to this edge.(In) |
output | The output of this edge.(In) |
deriv_input | Derivative w.r.t inputs of this edge.(Out) |
Implemented in ResponseNormEdge, ConvOneToOneEdge, DownSampleEdge, MaxPoolEdge, UpSampleEdge, ConvEdge, FCEdge, LocalEdge, and RGBToYUVEdge.
Computes the gradient for the weights and biases.
input | The input to this edge. |
deriv_output | The derivative w.r.t the output of this edge. |
Reimplemented in ConvOneToOneEdge, ConvEdge, FCEdge, and LocalEdge.
Computes the output layer state given the input.
Applies the weights and adds bias.
Implemented in ResponseNormEdge, ConvOneToOneEdge, DownSampleEdge, MaxPoolEdge, UpSampleEdge, ConvEdge, FCEdge, LocalEdge, and RGBToYUVEdge.
|
virtual |
Displays the weights.
Supportsinput layer weights only.
Reimplemented in EdgeWithWeight, ConvEdge, and LocalEdge.
|
virtual |
Displays the statistics of the weights.
Reimplemented in EdgeWithWeight.
|
virtual |
Returns the number of modules.
This is relevant for convolution-like edges.
Reimplemented in EdgeWithWeight, LocalEdge, ConvEdge, ConvOneToOneEdge, MaxPoolEdge, and RGBToYUVEdge.
|
virtual |
Returns the root mean square weight value.
Reimplemented in EdgeWithWeight.
|
virtual |
Returns whether the edge has any parameters.
Reimplemented in EdgeWithWeight.
|
virtual |
Initialize the weights and biases.
Reimplemented in EdgeWithWeight.
|
inline |
Returns whether back prop is blocked through this edge.
|
virtual |
Load the weights and biases from an hdf5 file.
file | The file handle. The file has been opened for reading. Do not close it. |
Reimplemented in EdgeWithWeight.
|
virtual |
Reduce the learning rate by factor.
Reimplemented in EdgeWithWeight.
|
virtual |
Write the weights and biases in an hdf5 file.
file | The file handle. The file has been opened for writing. Do not close it. |
Reimplemented in EdgeWithWeight.
|
virtual |
Set the spatial size of the input to this edge.
Reimplemented in LocalEdge, ConvEdge, ConvOneToOneEdge, MaxPoolEdge, ResponseNormEdge, DownSampleEdge, and UpSampleEdge.
void Edge::SetInputChannels | ( | int | a | ) |
Set the number of input channels.
void Edge::SetOutputChannels | ( | int | a | ) |
Set the number of output channels.
|
virtual |
Sets the edge to be tied to another edge.
Reimplemented in EdgeWithWeight, ConvEdge, LocalEdge, ResponseNormEdge, and MaxPoolEdge.
|
virtual |
Update the weights.
Reimplemented in EdgeWithWeight.
|
protected |
A marker.
Used for topological sorting.
|
protected |
The source layer for this edge.
|
protected |
The destination layer for this edge.