Apache SINGA
A distributed deep learning platform .
|
Base layer class. More...
#include <base_layer.h>
Public Member Functions | |
virtual void | Init (const LayerProto &proto) |
Layer initialization. More... | |
void | Init (const Layer &other, const vector< int > &shape) |
Copy layer configuration from the other Layer, and use the shape argument to as its data shape. | |
virtual void | ToProto (LayerProto *layer_proto, bool copyData) |
TODO(wangsheng) Marshal layer properties and data into google protobuf object (i.e., snapshot). More... | |
virtual void | Setup (const LayerProto &proto, const vector< SLayer > &srclayers)=0 |
Setup layer properties. More... | |
virtual void | Setup () |
Setup layer properties. More... | |
virtual void | SetupAfterPartition (const LayerProto &proto, const vector< int > &shape, const vector< SLayer > &srclayers)=0 |
Setup the layer properties except shape. More... | |
virtual void | SetupAfterPartition () |
Setup the layer properties except shape. | |
virtual vector< shared_ptr < Param > > | GetParams () |
Layers that have paramters must overload this function. More... | |
virtual void | ComputeFeature (bool training, const vector< SLayer > &srclayers)=0 |
Compute features of this layer based on connected layers. More... | |
virtual void | ComputeFeature (bool training) |
virtual void | ComputeGradient (const vector< SLayer > &srclayers)=0 |
Compute gradients for parameters and connecting layers. More... | |
virtual void | ComputeGradient () |
Compute gradients for parameters and connecting layers. | |
virtual int | partition_dimension () const |
Decide on which dimension to do the partitioning. More... | |
virtual ConnectionType | connection_type (int k) const |
Return connection type between two layers. More... | |
virtual PartitionType | partition_type () const |
virtual void | set_partitionid (int id) |
partition id is the ID of the layer in the original layer. | |
virtual int | partitionid () const |
virtual void | set_name (string name) |
virtual const string | type () const |
const std::string & | name () const |
Return name of this layer. | |
const std::string & | datablob () const |
const vector< int > & | shape (const Layer *layer) const |
virtual const Blob< float > & | data (const Layer *from) const |
virtual Blob< float > * | mutable_data (const Layer *from) |
virtual const Blob< float > & | grad (const Layer *from) const |
virtual Blob< float > * | mutable_grad (const Layer *from) |
virtual const vector< SLayer > | srclayers () const |
return LayerS that connected to this layer | |
virtual const vector< SLayer > | dstlayers () const |
return LayerS that this layer connected to | |
virtual const int | srclayers_size () const |
virtual const int | dstlayers_size () const |
virtual void | ClearDstLayers () |
virtual void | ClearSrcLayers () |
virtual void | AddSrcLayer (SLayer src) |
virtual void | AddDstLayer (SLayer dst) |
virtual bool | is_datalayer () const |
virtual bool | is_parserlayer () const |
virtual bool | is_losslayer () const |
virtual bool | is_bridgesrclayer () const |
virtual bool | is_bridgedstlayer () const |
Protected Attributes | |
string | name_ |
Blob< float > | data_ |
Blob< float > | grad_ |
LayerProto | layer_proto_ |
vector< SLayer > | srclayers_ |
vector< SLayer > | dstlayers_ |
Base layer class.
Children should implement at least Layer::Setup, Layer::ComputeFeature(), Layer::ComputGradient() functions for backpropagation method; TODO(zhaojing) subclass the base layer class to support contrastive divergence, The identifier of each layer is the literal string of the class name without the suffix "Layer", which is used in layer registration and creation.
|
pure virtual |
Compute features of this layer based on connected layers.
Implement forward propagation for BP. TODO(zhaojing) Implement both postive phase and negative phase for CD.
training | true if in training phase |
srclayers | layers connecting to this layer |
Implemented in singa::ParserLayer, singa::PrefetchLayer, singa::DataLayer, singa::BridgeDstLayer, and singa::BridgeSrcLayer.
|
pure virtual |
Compute gradients for parameters and connecting layers.
Implement backward propagation for BP. TODO(zhaojing) Calculate gradients for parameters for CD.
srclayers | layers connecting to this layer. |
Implemented in singa::ParserLayer, singa::PrefetchLayer, singa::DataLayer, singa::BridgeDstLayer, and singa::BridgeSrcLayer.
|
inlinevirtual |
Return connection type between two layers.
Currently support two connections: kOneToOne, and kOneToAll. kOneToOne indicates the dst neuron depends on only one neuron from src layer. kOneToAll indicates the dst neuron depends on all neurons from src layer. TODO support kOneToMany.
Reimplemented in singa::SoftmaxLossLayer, singa::InnerProductLayer, and singa::ConvolutionLayer.
Reimplemented in singa::SliceLayer, singa::PrefetchLayer, and singa::BridgeSrcLayer.
|
inline |
|
inlinevirtual |
Layers that have paramters must overload this function.
Reimplemented in singa::InnerProductLayer, and singa::ConvolutionLayer.
|
virtual |
Reimplemented in singa::ParserLayer, singa::LossLayer, singa::SliceLayer, singa::PrefetchLayer, singa::DataLayer, and singa::BridgeSrcLayer.
|
inlinevirtual |
Decide on which dimension to do the partitioning.
kLayer, kData, kNone (no partition)
|
inlinevirtual |
Reimplemented in singa::ParserLayer, singa::PrefetchLayer, singa::DataLayer, and singa::SoftmaxLossLayer.
|
pure virtual |
Setup layer properties.
Setup the shapes for data and parameters, also setup some properties based on the layer configuration and connected src layers.
srclayers | layers connecting to this layer |
Implemented in singa::ParserLayer, singa::LossLayer, singa::SplitLayer, singa::SliceLayer, singa::PrefetchLayer, singa::DataLayer, singa::ConcateLayer, singa::TanhLayer, singa::BridgeDstLayer, singa::LMDBDataLayer, singa::ShardDataLayer, singa::BridgeSrcLayer, singa::RGBImageLayer, singa::SoftmaxLossLayer, singa::ReLULayer, singa::PoolingLayer, singa::MnistImageLayer, singa::LRNLayer, singa::LabelLayer, singa::InnerProductLayer, singa::DropoutLayer, and singa::ConvolutionLayer.
|
virtual |
Setup layer properties.
Setup the shapes for data and parameters, also setup some properties based on the layer configuration and connected src layers.
srclayers | layers connecting to this layer |
Reimplemented in singa::ParserLayer, and singa::DataLayer.
|
pure virtual |
Setup the layer properties except shape.
The shape is already set and passed in to set other properties. properties are set according to shapes of itself and connected layers, and configuration. this should not change the current shape_( shape check is done outside the function).
Implemented in singa::ParserLayer, singa::LossLayer, singa::SplitLayer, singa::SliceLayer, singa::PrefetchLayer, singa::DataLayer, singa::ConcateLayer, singa::TanhLayer, singa::BridgeDstLayer, singa::BridgeSrcLayer, singa::SoftmaxLossLayer, singa::ReLULayer, singa::PoolingLayer, singa::LRNLayer, singa::InnerProductLayer, singa::DropoutLayer, and singa::ConvolutionLayer.
|
virtual |
TODO(wangsheng) Marshal layer properties and data into google protobuf object (i.e., snapshot).
Parameters are marshalled separately into another object (i.e., model).
layer_proto | |
copyData | if true marshal layer data, e.g., feature value |