Base¶
Layer¶
- 
class paddle::Layer¶
- Base class for layer. Define necessary variables and functions for every layer. - Subclassed by paddle::AddtoLayer, paddle::AgentLayer, paddle::AverageLayer, paddle::BatchNormBaseLayer, paddle::BlockExpandLayer, paddle::BootBiasLayer, paddle::ConcatenateLayer, paddle::ConcatenateLayer2, paddle::ConvBaseLayer, paddle::ConvexCombinationLayer, paddle::ConvShiftLayer, paddle::CosSimLayer, paddle::CosSimVecMatLayer, paddle::CostLayer, paddle::CRFLayer, paddle::CTCLayer, paddle::DataLayer, paddle::DataNormLayer, paddle::EosIdCheckLayer, paddle::ExpandLayer, paddle::FeatureMapExpandLayer, paddle::FullyConnectedLayer, paddle::GatedRecurrentLayer, paddle::GatherAgentLayer, paddle::GetOutputLayer, paddle::GruStepLayer, paddle::HierarchicalSigmoidLayer, paddle::InterpolationLayer, paddle::LambdaCost, paddle::LstmLayer, paddle::LstmStepLayer, paddle::MaxIdLayer, paddle::MaxLayer, paddle::MixedLayer, paddle::MultiplexLayer, paddle::NCELayer, paddle::NormLayer, paddle::OuterProdLayer, paddle::ParameterReluLayer, paddle::PoolLayer, paddle::PowerLayer, paddle::PrintLayer, paddle::RankingCost, paddle::RecurrentLayer, paddle::RecurrentLayerGroup, paddle::ResizeLayer, paddle::SamplingIdLayer, paddle::ScalingLayer, paddle::ScatterAgentLayer, paddle::SelectiveFullyConnectedLayer, paddle::SequenceConcatLayer, paddle::SequenceLastInstanceLayer, paddle::SequenceReshapeLayer, paddle::SlopeInterceptLayer, paddle::SubSequenceLayer, paddle::SumToOneNormLayer, paddle::TensorLayer, paddle::TransLayer, paddle::ValidationLayer - Public Functions - 
virtual void waitInputValue()¶
- Wait until all input value ready. Called before Layer::forward() function. 
 - 
virtual void copyOutputToOtherDevice()¶
- Copy layer’s output_ to other device. If output layer is in other device, called after Layer::forward() function. 
 - 
virtual void waitAndMergeOutputGrad()¶
- Wait until all output grad ready and merge them to output_.grad. Called before Layer::backward() function. 
 - 
virtual void markAllInputGrad()¶
- Notify previous layer the output grad ready. Called after Layer::backward() function. 
 - 
Layer(const LayerConfig &config, bool useGpu = FLAGS_use_gpu)¶
 - 
virtual ~Layer()¶
 - 
bool needGradient() const¶
- Get the flag whether layer need to compute gradient. 
 - 
void setNeedGradient(bool need)¶
- Set the flag whether layer need to compute gradient. 
 - 
void setNeedSequenceInfo(bool need)¶
- Set the flag whether layer need to re-compute sequence information, which includes sequenceStartPositions or subSequenceStartPositions. 
 - 
const std::string &getName() const¶
- Get layer’s name. 
 - 
const std::string &getType() const¶
- Get layer’s type. 
 - 
size_t getSize() const¶
- Get layer’s size. 
 - 
int getDeviceId() const¶
- Get layer’s deviceId. 
 - 
void addPrev(LayerPtr l)¶
- Add the inputLayer. 
 - 
const LayerPtr &getPrev(size_t i)¶
- Get the size of inputLayer[i]. 
 - 
const IVectorPtr &getOutputLabel()¶
- Get the forward-output label. 
 - 
void setOutput(const std::string &name, Argument *output)¶
- If layer has multi-output, set output into outputMap_. 
 - 
const std::vector<ParameterPtr> &getParameters()¶
- Get layer’s parameters. 
 - 
const ParameterPtr &getBiasParameter()¶
- Get layer’s bias-parameters. 
 - 
void resizeOutput(size_t height, size_t width)¶
- Resize the output matrix size. 
 - 
void reserveOutput(size_t height, size_t width)¶
- Resize the output matrix size, and reset value to zero. 
 - 
void resetOutput(size_t height, size_t width)¶
- Resize the output matrix size, and reset value and grad to zero. 
 - 
void zeroGrad()¶
- Clear the gradient of output. 
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void initSubNetwork(NeuralNetwork *rootNetwork, const ModelConfig &config, const std::vector<ParameterType> ¶meterTypes, bool useGpu)¶
- Intialization for sub network if there has sub network. - Parameters
- rootNetwork-- root network 
- config-- model config 
- parameterTypes-- parameter’s type 
- useGpu-- whether to use gpu or not 
 
 
 - 
virtual void accessSubNetwork(const std::function<void(NeuralNetwork&)> &callback)¶
- Access SubNetwork Object. If subnetwork exists, then invoke callback with subnetwrk. - Parameters
- callback-- if sub-network is exist, the callback is invoked. 
 
 
 - 
virtual void prefetch()¶
- If use sparse row matrix as parameter, prefetch feature ids in input label. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void resetState()¶
- Reset the internal state variables. Allocate them if they have not been allocated. This function need to called before Layer::forward() for generating sequence. - This is used for sequence generation. When generating sequence, the calculation at current timestamp depends on the state from previous timestamp. The model needs to keep the information about the previous timestamp in the state variables. Layers such as RecurrentLayer, LstmLayer and ContextLayer have state variables. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Get layer state. - Return
- A copy of internal state.
 
 - 
void showOutputStats()¶
- Show output state. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr) = 0¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void onPassEnd()¶
- One pass is finished. 
 - Public Static Functions - 
LayerPtr create(const LayerConfig &config)¶
- Create pointer of layer. 
 - Protected Functions - 
void markInputGrad(int inputIndex)¶
- Notify specified layer the output grad ready. Called in the backward function. If do mark input grad in the backward function, you should to ensure that all input grad will be marked in the backward function. 
 - 
const IVectorPtr &getInputLabel(const Layer &inputLayer)¶
- Get the forward-input label. 
 - 
void resetSpecifyOutput(Argument &output, size_t height, size_t width, bool isValueClean, bool isGradClean)¶
- Change the size of output (value, grad). Reset to value zero if isValueClean = true, Reset to grad zero if isGradClean = true. 
 - 
void addOutputArgument(int deviceId)¶
- Add output argument to other devices. 
 - 
void forwardActivation()¶
- Forward of activation function. 
 - 
void backwardActivation()¶
- Backward of activation function. 
 - 
void forwardDropOut()¶
- Forward of dropOut. 
 - 
void initNeedFlags()¶
- Initilize the needGradient_ flag. 
 - Protected Attributes - 
bool useGpu_¶
- whether to use GPU 
 - 
int deviceId_¶
- Device Id. CPU is -1, and GPU is 0, 1, 2 ... 
 - 
std::vector<LayerPtr> inputLayers_¶
- Input layers. 
 - 
std::vector<ParameterPtr> parameters_¶
- Parameter for each input layer. Parameters_[i] is nullptr if inputLayers_[i] does not need parameter. 
 - 
ParameterPtr biasParameter_¶
- nullptr if bias is not needed. 
 - 
std::vector<Argument> outputOtherDevice_¶
- Several outputs stored on different devices, used in ‘parallel_nn’ case, and record them by deviceId_. 
 - 
std::unique_ptr<ActivationFunction> activation_¶
 - 
PassType passType_¶
- Current passType, PASS_TRAIN or PASS_TEST. 
 - 
bool needGradient_¶
- Whether the layer need to compute gradient. 
 - 
bool needSequenceInfo_¶
- Whether the layer need to compute re-sequence information. 
 - 
std::vector<bool> markInBackward_¶
- Mark input grad in(true) or out(false) of backward function. 
 
- 
virtual void 
Projection¶
- 
class paddle::Projection¶
- A projection takes one Argument as input, calculate the result and add it to output Argument. - Subclassed by paddle::ContextProjection, paddle::DotMulProjection, paddle::FullMatrixProjection, paddle::IdentityOffsetProjection, paddle::IdentityProjection, paddle::TableProjection, paddle::TransposedFullMatrixProjection - Public Functions - 
Projection(const ProjectionConfig &config, ParameterPtr parameter, bool useGpu)¶
 - 
virtual ~Projection()¶
 - 
const std::string &getName() const¶
 - 
void forward(const Argument *in, const Argument *out, PassType passType)¶
- Forward propagation. If backward() will be called, in and out must be kept valid until then. - Parameters
- in-- input of projection 
- out-- output of projection 
- passType-- PASS_TRAIN of PASS_TEST 
 
 
 - 
virtual void forward() = 0¶
 - 
virtual void backward(const UpdateCallback &callback) = 0¶
 - 
virtual void resetState()¶
- See comment in Layer.h for the function with the same name. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Get layer state. A copy of internal state is returned. 
 - 
size_t getOutputSize() const¶
- Get output size of projection. 
 - Public Static Functions - 
Projection *create(const ProjectionConfig &config, ParameterPtr parameter, bool useGpu)¶
 - Public Static Attributes - 
ClassRegistrar<Projection, ProjectionConfig, ParameterPtr, bool> registrar_¶
- Register a projection. 
 
- 
Operator¶
- 
class paddle::Operator¶
- Operator like Projection, but takes more than one Arguments as input. - Note
- : Operator can’t have parameters.
 - Subclassed by paddle::ConvOperator, paddle::DotMulOperator - Public Functions - 
Operator(const OperatorConfig &config, bool useGpu)¶
 - 
virtual ~Operator()¶
 - 
const OperatorConfig &getConfig() const¶
 - 
void forward(std::vector<const Argument *> ins, Argument *out, PassType passType)¶
- Forward propagation. If backward() will be called, in and out must be kept valid until then. - Parameters
- ins-- inputs of operator 
- out-- output of operator 
- passType-- PASS_TRAIN of PASS_TEST 
 
 
 - 
virtual void forward() = 0¶
 - 
virtual void backward() = 0¶
 - 
virtual void resetState()¶
- See comment in Layer.h for the function with the same name. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Set layer state. 
 
Data Layer¶
- 
class paddle::DataLayer¶
- This layer just copy data to output, and has no backward propagation. - The config file api is data_layer. - Inherits from paddle::Layer - Public Functions - 
DataLayer(const LayerConfig &config)¶
 - 
virtual void prefetch()¶
- Prefetch sparse matrix/ids only. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. Copy data_ (value, in, grad, ids, cpuSequenceDims, sequenceStartPositions, subSequenceStartPositions, strs) to output_. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Data layer’s backward propagation do nothing. 
 - 
virtual void copyOutputToOtherDevice()¶
- Copy layer’s output_ to other device. If output layer is in other device, called after Layer::forward() function. 
 
- 
Fully Connected Layers¶
FullyConnectedLayer¶
- 
class paddle::FullyConnectedLayer¶
- A layer has full connections to all neurons in the previous layer. It computes an inner product with a set of learned weights, and (optionally) adds biases. - The config file api is fc_layer. - Inherits from paddle::Layer - Public Functions - 
FullyConnectedLayer(const LayerConfig &config)¶
 - 
~FullyConnectedLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void prefetch()¶
- If use sparse row matrix as parameter, prefetch feature ids in input label. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
SelectiveFullyConnectedLayer¶
- 
class paddle::SelectiveFullyConnectedLayer¶
- The SelectiveFullyConnectedLayer class. - SelectiveFullyConnectedLayer differs from FullyConnectedLayer by that it requires an additional input to indicate several selected columns, and only compute the multiplications between the input matrices and the selected columns of the parameter matrices of this layer. If the selected columns is not specified, SelectiveFullyConnected layer acts exactly like FullyConnectedLayer. - The config file api is selective_fc_layer. - Inherits from paddle::Layer - Public Functions - 
SelectiveFullyConnectedLayer(const LayerConfig &config)¶
 - 
~SelectiveFullyConnectedLayer()¶
 - 
virtual void prefetch()¶
- If use sparse row matrix as parameter, prefetch feature ids in input label. 
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void reserveOutput(size_t height, size_t width, size_t nnz)¶
- Resize the output matrix size. And reset value to zero. 
 - Fill candidates to select several activations as output. - Note
- CURRENTLY, THIS METHOD IS ONLY USED FOR BEAM SEARCH
- Parameters
- candidates-- specifies several selected columns of the parameter matrices of this layer. Multiplications only between the input matrices and the selected columns are computed. If the candidates is a nullptr, selective fc layer acts exactly like the fully connected layer. 
 
 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Conv Layers¶
ConvBaseLayer¶
- 
class paddle::ConvBaseLayer¶
- A Base Convolution Layer, which convolves the input image with learned filters and (optionally) adds biases. - Inherits from paddle::Layer - Subclassed by paddle::CudnnConvLayer, paddle::ExpandConvLayer - Public Functions - 
ConvBaseLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
int outputSize(int imageSize, int filterSize, int padding, int stride)¶
- Calculate output size based on caffeMode_. - input(+padding): 0123456789
- imageSize(+padding) = 10;
- filterSize = 3;
- stride = 2;
- caffeMode_ is true:- output: (012), (234), (456), (678)
- outputSize = 4;
 
- caffeMode_ is false:- output: (012), (234), (456), (678), (9)
- outputSize = 5;
 
 
 - Protected Types - 
typedef std::vector<int> IntV¶
 - Protected Attributes - 
int numFilters_¶
- The number of filters. 
 - 
IntV groups_¶
- Group size, refer to grouped convolution in Alex Krizhevsky’s paper: when group=2, the first half of the filters are only connected to the first half of the input channels, and the second half only connected to the second half. 
 - Whether the bias is shared for feature in each channel. 
 - 
WeightList weights_¶
- shape of weight: (numChannels * filterPixels_, numFilters) 
 - 
std::unique_ptr<Weight> biases_¶
- If shared_biases is false shape of bias: (numFilters_, 1) If shared_biases is ture shape of bias: (numFilters_ * outputX * outputY, 1) 
 - 
bool caffeMode_¶
- True by default. The only difference is the calculation of output size. 
 
- 
ConvOperator¶
- 
class paddle::ConvOperator¶
- ConvOperator takes two inputs to perform the convolution. The first input is the image, and the second input is the convolution kernel. The height of data for two inputs are the same. Each data of the first input is convolved with each data of the second input indepedently. - The config file api is conv_operator. - Inherits from paddle::Operator 
ConvShiftLayer¶
- 
class paddle::ConvShiftLayer¶
- A layer for circular convluation of two vectors, which is used in NEURAL TURING MACHINE. - Input: two vectors, the first is data (batchSize x dataDim) the second is shift weights (batchSize x shiftDim) 
- Output: a vector (batchSize x dataDim) Assumed that: 
- a[in]: contains M elements. 
- b[in]: contains N elements (N should be odd). 
- c[out]: contains M elements. \[ c[i] = \sum_{j=-(N-1)/2}^{(N-1)/2}a_{i+j} * b_{j} \]
 - In this formula: - a’s index is computed modulo M.
- b’s index is comupted modulo N.
 - The config file api is conv_shift_layer. - Inherits from paddle::Layer - Public Functions - 
ConvShiftLayer(const LayerConfig &config)¶
 - 
~ConvShiftLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
CudnnConvLayer¶
- 
class paddle::CudnnConvLayer¶
- A subclass of ConvBaseLayer by cuDNN implementation. It only supports GPU mode. We automatic select CudnnConvLayer for GPU mode and ExpandConvLayer for CPU mode if you set type of “conv”. User also can specfiy type of “exconv” or “cudnn_conv” for particular type. - The config file api is img_conv_layer. - Inherits from paddle::ConvBaseLayer - Public Functions - 
CudnnConvLayer(const LayerConfig &config)¶
 - 
~CudnnConvLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. Initialize member variables and create tenor descriptor. 
 - 
void reshape(int batchSize)¶
- Reshape is done each forward. Reshape tensor decriptor inputDesc_, outputDesc_, convDesc_. And search the faster algo or the fastest algo within a given memeory limit. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
void addBiases()¶
 - 
void bpropBiases()¶
 - Protected Attributes - 
int imageH_¶
 - 
int imageW_¶
 - 
int outputH_¶
 - 
int outputW_¶
 - 
hl_tensor_descriptor biasDesc_¶
- Cudnn tensor descriptor for bias. 
 - 
std::vector<hl_tensor_descriptor> inputDesc_¶
- Cudnn tensor descriptor for input. 
 - 
std::vector<hl_tensor_descriptor> outputDesc_¶
- Cudnn tensor descriptor for output. 
 - 
std::vector<hl_filter_descriptor> filterDesc_¶
- Cudnn tensor descriptor for filter. 
 - 
std::vector<hl_convolution_descriptor> convDesc_¶
- Cudnn tensor descriptor for a convolution operation. 
 - 
IntV inputOffset_¶
- One sample offset of input data. 
 - 
IntV outputOffset_¶
- One sample offset of output data. 
 - 
IntV weightOffset_¶
- One group offset of weight. 
 - 
int biasOffset_¶
- One group offset of bias. 
 - 
std::vector<int> fwdAlgo_¶
- Save the algorithm for forward convolution, which is obtained by cudnn api to search the best suited algorithm. 
 - 
std::vector<int> bwdFilterAlgo_¶
- Save the algorithm for computing convolution gradient with respect to filter coefficients. 
 - 
std::vector<int> bwdDataAlgo_¶
- Save the algorithm for computing convolution gradient with respect to the output. 
 - 
std::vector<size_t> fwdLimitBytes_¶
- Amount of GPU memory needed as workspace to be able to execute a forward convolution with the specified algo. 
 - 
std::vector<size_t> bwdFilterLimitBytes_¶
- Amount of GPU memory needed as workspace to be able to execute a backwardFilter with the specified algo. 
 - 
std::vector<size_t> bwdDataLimitBytes_¶
- Amount of GPU memory needed as workspace to be able to execute a backwardData with the specified algo. 
 - 
std::vector<void *> workSpace_¶
- Device work space address for each group. 
 - 
int maxGroups_¶
- Max number of groups. 
 - 
void *workSpaceData_¶
- Total work space address in device for all groups. 
 - 
size_t workSpaceInBytes_¶
- Size of total work space. 
 - 
bool isSelectAlgo_¶
- Is or not select conv algorihtm. 
 - 
int batchNum_¶
- batchNum is used to record batch size. If the batch size is changed, the selection algorithm will be called. 
 
- 
ExpandConvLayer¶
- 
class paddle::ExpandConvLayer¶
- A subclass of convolution layer. This layer expands input and use matrix multiplication to calculate convolution operation. - The config file api is img_conv_layer. - Inherits from paddle::ConvBaseLayer - Public Functions - 
ExpandConvLayer(const LayerConfig &config)¶
 - 
~ExpandConvLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
size_t getSize()¶
 - 
void resetExpandInput(size_t height, size_t width)¶
- Create or resize expandInput_. 
 - 
void resetConvOutput(size_t batchSize, int inIdx)¶
- Create or resize transOutValue_. 
 - 
void expandFwdOnce(MatrixPtr image, int inIdx, int startIdx)¶
- Expand one input sample and perform matrix multiplication. 
 - Add shared bias. 
 - Add unshared bias. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
IntV subM_¶
- For expand convolution. subM_ = numFilters_ / groups_. 
 - 
IntV subN_¶
- subN_ = outputH_ * outputW_. 
 - 
IntV subK_¶
- subK_ = channels_ * filterPixels_ * groups_. 
 - 
IntV imgSizeH_¶
- The spatial dimensions of height of input feature map. 
 - 
IntV imgSizeW_¶
- The spatial dimensions of width of input feature map. 
 - 
IntV outputH_¶
- The spatial dimensions of height of output feature map. 
 - 
IntV outputW_¶
- The spatial dimensions of width of output feature map. 
 
- 
ContextProjection¶
- 
class paddle::ContextProjection¶
- Context projection concatenate features in adjacent time steps in a sequence. The i-th row of the output is the concatenation of context_length rows of the input. The context_length rows are the consecutive rows from the i+shift_start row. - For example, assumed input (x) has 4 words and the dimension of each word representation is 2. If we use zero to pad instead of learned weight to pad, and the context_lenth is 3, the output (y) is: - x = [a1, a2; b1, b2; c1, c2; d1, d2] y = [0, 0, a1, a2, b1, b2; a1, a2, b1, b2, c1, c2; b1, b2, c1, c2, d1, d2; c1, c2, d1, d2, 0, 0] - The config file api is context_projection. - Inherits from paddle::Projection - Public Functions - 
ContextProjection(const ProjectionConfig &config, ParameterPtr parameter, bool useGpu)¶
- Constructor. If context_start is zero and context_lenth is one, it will set trainable_padding false. trainable_padding is an optional arguments and if it is set, constructor will set learned weight, which is used to pad output. 
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 - 
virtual void resetState()¶
- See comment in Layer.h for the function with the same name. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Get layer state. A copy of internal state is returned. 
 
- 
Pooling Layers¶
PoolLayer¶
- 
class paddle::PoolLayer¶
- Basic parent layer of pooling Pools the input within regions. - Inherits from paddle::Layer - Subclassed by paddle::CudnnPoolLayer, paddle::PoolProjectionLayer - Public Functions - 
PoolLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
PoolProjectionLayer¶
- 
class paddle::PoolProjectionLayer¶
- Basic parent layer of different kinds of pooling. - Inherits from paddle::PoolLayer - Subclassed by paddle::AvgPoolProjectionLayer, paddle::MaxPoolProjectionLayer 
CudnnPoolLayer¶
- 
class paddle::CudnnPoolLayer¶
- CudnnPoolLayer is subclass of PoolLayer, which is implemented by cudnn api and only supports GPU. - The config file api is img_pool_layer. - Inherits from paddle::PoolLayer - Public Functions - 
CudnnPoolLayer(const LayerConfig &config)¶
 - 
~CudnnPoolLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void reshape(int batchSize)¶
- Reshape input and output tensor descriptor. The batch size maybe change during training in last batch of each pass. So reshaping is needed. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
int outputSize(int imageSize, int windowSize, int padding, int stride)¶
- Calculate output size according window size of pooling. 
 - Public Static Functions - 
bool typeCheck(const std::string &poolType, hl_pooling_mode_t *mode = nullptr)¶
 - Protected Attributes - 
int windowHeight¶
 - 
int windowWidth¶
 - 
int heightPadding¶
 - 
int widthPadding¶
 - 
int strideHeight¶
 - 
int strideWidth¶
 - 
int imageH_¶
 - 
int imageW_¶
 - 
int outputH_¶
 - 
int outputW_¶
 - 
hl_pooling_mode_t mode_¶
- mode_ is poolint type, inlcuding “cudnn-max-pool”, “cudnn-avg-pool” “cudnn-avg-excl-pad-pool”. 
 - 
hl_tensor_descriptor inputDesc_¶
- cudnn tensor descriptor for input. 
 - 
hl_tensor_descriptor outputDesc_¶
- cudnn tensor descriptor for output. 
 - 
hl_pooling_descriptor poolingDesc_¶
- A description of a pooling operation. 
 
- 
Norm Layers¶
NormLayer¶
- 
class paddle::NormLayer¶
- Basic parent layer of normalization. - Note
- Normalize the input in local region
 - Inherits from paddle::Layer - Subclassed by paddle::ResponseNormLayer - Public Functions - 
NormLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
CMRProjectionNormLayer¶
- 
class paddle::CMRProjectionNormLayer¶
- response normalization across feature maps namely normalize in number of size_ channels - Inherits from paddle::ResponseNormLayer - Public Functions - 
CMRProjectionNormLayer(const LayerConfig &config)¶
 - 
~CMRProjectionNormLayer()¶
 - 
size_t getSize()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
DataNormLayer¶
- 
class paddle::DataNormLayer¶
- A layer for data normalization. - Input: One and only one input layer is accepted. The input layer must be DataLayer with dense data type.
- Output: The normalization of the input data
 - Reference: LA Shalabi, Z Shaaban, B Kasasbeh. Data mining: A preprocessing engine - Three data normalization methoeds are considered - z-score: y = (x-mean)/std
- min-max: y = (x-min)/(max-min)
- decimal-scaling: y = x/10^j, where j is the smallest integer such that max(|y|)<1
 - Inherits from paddle::Layer - Public Functions - 
DataNormLayer(const LayerConfig &config)¶
 - 
~DataNormLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
ResponseNormLayer¶
- 
class paddle::ResponseNormLayer¶
- response normalization within feature maps namely normalize in independent channel When code refactoring, we delete the original implementation. Need to implement in the futrue. - Inherits from paddle::NormLayer - Subclassed by paddle::CMRProjectionNormLayer - Public Functions - 
ResponseNormLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
BatchNormBaseLayer¶
- 
class paddle::BatchNormBaseLayer¶
- Batch normalization layer use to normalizes the input to across the batch. - By default, calculating global mean and variance statistics via a running average in the training peroid. Then the pre-calculated global mean and variance are used for testing. - Moving mean and variance are located in Parameter object when constructing and the calculation will change them. Now we only save global mean and variance of one thread in first node for GPU. But the calculation in CPU is different, because parameters are shared by multiple threads. Here using ShareCpuMatrix with lock to calculate. We still save global mean and variance in first node in CPU when multi machine. - [1] S. Ioffe and C. Szegedy, “Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift.” arXiv preprint arXiv:1502.03167 (2015). - Inherits from paddle::Layer - Subclassed by paddle::BatchNormalizationLayer, paddle::CudnnBatchNormLayer - Public Functions - 
BatchNormBaseLayer(const LayerConfig &config)¶
 - 
~BatchNormBaseLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void calFeatureMapSize()¶
- Calculate feature map size. Some input uses frameHeight and frameWidth to store feature size. 
 - Public Static Functions - Protected Attributes - 
std::unique_ptr<Weight> weight_¶
- Batch normalization scale parameter, which is referred to as gamma in in original paper. 
 - 
std::unique_ptr<Weight> biases_¶
- Batch normalization bias parameter, which is referred to as beta in in original paper. 
 - 
MatrixPtr savedMean_¶
- Save intermediate results computed during the forward pass, these can then be reused to speed up the backward pass. 
 - 
int imgSize_¶
- Height or width of input image feature, now height is equal to width. imgSize is 1 if the input is fully-connected layer. 
 - 
int imageH_¶
 - 
int imageW_¶
 - 
int imgPixels_¶
- Height * Width. 
 - 
int channels_¶
- Feature dimension. If the input layer is conv layer, it is the channels of feature map of the conv layer. If the input layer is fully-connected layer, it is the dimension of fc layer. 
 - 
bool useGlobalStats_¶
 - 
real movingAvgFraction_¶
 
- 
BatchNormalizationLayer¶
- 
class paddle::BatchNormalizationLayer¶
- A Inheritance class of Batch normalization layer. It supports both CPU and GPU. - The config file api is batch_norm_layer. - Inherits from paddle::BatchNormBaseLayer - Public Functions - 
BatchNormalizationLayer(const LayerConfig &config)¶
 - 
~BatchNormalizationLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Functions - 
void setMeanAndStd()¶
- Load pre-calculated mean and std. 
 - 
void calMovingMeanAndVar()¶
- Calculate moving mean and variance. 
 - Protected Attributes - 
bool firstTest_¶
- Load mean and variance only once flag. 
 - Protected Static Attributes - 
const real EPS¶
- Epsilon value used in the batch normalization formula. 
 
- 
CudnnBatchNormLayer¶
- 
class paddle::CudnnBatchNormLayer¶
- Cudnn Batch normalization layer use to cuDNN lib to implentment. - The config file api is batch_norm_layer. - Note
- Cudnn version must >= v4.0, and better to use the latest version (v5.1).
 - Inherits from paddle::BatchNormBaseLayer - Public Functions - 
CudnnBatchNormLayer(const LayerConfig &config)¶
 - 
~CudnnBatchNormLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void reshape(int batchSize)¶
- reshape tensor of ioDesc_. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
hl_tensor_descriptor ioDesc_¶
- Input/output tensor descriptor desc. 
 - 
hl_tensor_descriptor bnParamDesc_¶
- Shared tensor descriptor desc for the 6 tenros: bnScale, bnBias, running mean/var, save_mean/var 
 - Protected Static Attributes - 
const double EPS¶
- Epsilon value used in the batch normalization formula. Minimum allowed value is CUDNN_BN_MIN_EPSILON defined in cudnn.h. Same epsilon value should be used in forward and backward functions. 
 
SumToOneNormLayer¶
- 
class paddle::SumToOneNormLayer¶
- A layer for sum-to-one normalization, which is used in NEURAL TURING MACHINE. \[ out[i] = \frac {in[i]} {\sum_{k=1}^N in[k]} \]where \(in\) is a (batchSize x dataDim) input vector, and \(out\) is a (batchSize x dataDim) output vector.- The config file api is sum_to_one_norm_layer. - Inherits from paddle::Layer - Public Functions - 
SumToOneNormLayer(const LayerConfig &config)¶
 - 
~SumToOneNormLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Activation Layer¶
ParameterReluLayer¶
- 
class paddle::ParameterReluLayer¶
- ParameterReluLayer active inputs with learnable parameter weight_. forward: \[ y = x > 0 ? x : w .* x \]backward:\[\begin{split} dx = x > 0 ? dy : w .* dy \\ dw = x > 0 ? 0 : dy.*x \end{split}\]Here, x is the input, w is the weight, y is the output. dx, dw, dy is the gradient.- Inherits from paddle::Layer - Public Functions - 
ParameterReluLayer(const LayerConfig &config)¶
 - 
~ParameterReluLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
size_t partialSum_¶
- partialSum_ makes a group of inputs share same weights, - partialSum_ = 1: element wise activation: each element has a weight_,
- partialSum_ = number of elements in one channel, channels wise parameter activation, elements in a channel share same weight_,
- partialSum_ = number of outputs all elements share same weight_,
 
 
- 
Recurrent Layers¶
RecurrentLayer¶
- 
class paddle::RecurrentLayer¶
- RecurrentLayer takes 1 input layer. The output size is the same with input layer. For each sequence [start, end] it performs the following computation: \[\begin{split} out_{i} = act(in_{i}) \ \ \text{for} \ i = start \\ out_{i} = act(in_{i} + out_{i-1} * W) \ \ \text{for} \ start < i <= end \end{split}\]If reversed is true, the order is reversed:\[\begin{split} out_{i} = act(in_{i}) \ \ \text{for} \ i = end \\ out_{i} = act(in_{i} + out_{i+1} * W) \ \ \text{for} \ start <= i < end \end{split}\]There are two methods to calculate rnn. One way is to compute rnn one sequence by one sequence. The other way is to reorganize the input into batches, then compute rnn one batch by one batch. Users can select them by rnn_use_batch flag.- Inherits from paddle::Layer - Public Functions - 
RecurrentLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void resetState()¶
- Reset the internal state variables. Allocate them if they have not been allocated. This function need to called before Layer::forward() for generating sequence. - This is used for sequence generation. When generating sequence, the calculation at current timestamp depends on the state from previous timestamp. The model needs to keep the information about the previous timestamp in the state variables. Layers such as RecurrentLayer, LstmLayer and ContextLayer have state variables. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Get layer state. - Return
- A copy of internal state.
 
 - Protected Functions - 
void forwardSequence(int batchSize, size_t numSequences, const int *starts)¶
- If user do not set rnn_use_batch=true, it will compute rnn forward one sequence by one sequence in default. - Parameters
- batchSize-- Total words number of all samples in this batch. 
- numSequences-- The sample number. 
- starts-- Each start position of each samples. 
 
 
 - 
void forwardOneSequence(int start, int length)¶
- Compute rnn forward by one sequence. - Parameters
- start-- The start position of this sequence (or sample). 
- length-- The length of this sequence (or sample), namely the words number of this sequence. 
 
 
 - 
void backwardSequence(int batchSize, size_t numSequences, const int *starts)¶
- Compute rnn backward one sequence by onesequence. - Parameters
- batchSize-- Total words number of all samples in this batch. 
- numSequences-- The sample number. 
- starts-- Each start position of each samples. 
 
 
 - 
void backwardOneSequence(int start, int length)¶
- Compute rnn backward by one sequence. - Parameters
- start-- The start position of this sequence (or sample). 
- length-- The length of this sequence (or sample), namely the words number of this sequence. 
 
 
 - 
void forwardBatch(int batchSize, size_t numSequences, const int *starts)¶
- Reorganize input into batches and compute rnn forward batch by batch. It will convert batch shape to sequence after finishing forward. The batch info can refer to SequenceToBatch class. - Parameters
- batchSize-- Total words number of all samples in this batch. 
- numSequences-- The sample number. 
- starts-- Each start position of each samples. 
 
 
 - 
void backwardBatch(int batchSize, size_t numSequences, const int *starts)¶
- Reorganize input into batches and compute rnn forward batch by batch. - Parameters
- batchSize-- Total words number of all samples in this batch. 
- numSequences-- The sample number. 
- starts-- Each start position of each samples. 
 
 
 - Protected Attributes - 
bool reversed_¶
- Whether compute rnn by reverse. 
 - 
std::unique_ptr<SequenceToBatch> batchValue_¶
- If compute batch by batch, batchValue_ will be used to save the reorganized input value. 
 - 
std::unique_ptr<SequenceToBatch> batchGrad_¶
- If compute batch by batch, batchGrad_ will be used to save the gradient with respect to reorganized input value. 
 
- 
SequenceToBatch¶
- 
class paddle::SequenceToBatch¶
- Public Functions - 
SequenceToBatch(bool useGpu)¶
 - 
void resizeOrCreateBatch(int batchSize, size_t numSequences, const int *seqStarts, bool reversed, bool prevBatchState = false)¶
 - 
size_t getNumBatch() const¶
 - Protected Functions - Protected Attributes - 
IVectorPtr batchStartPositions_¶
 - 
IVectorPtr seq2BatchIdx_¶
 - 
IVectorPtr cpuSeq2BatchIdx_¶
 - 
IVectorPtr cpuSeqIdx_¶
 - 
IVectorPtr cpuSeqEndIdxInBatch_¶
 - 
IVectorPtr seqIdx_¶
 - 
IVectorPtr seqEndIdxInBatch_¶
 - 
size_t numBatch_¶
 - 
bool useGpu_¶
 
- 
LSTM¶
LstmLayer¶
- 
class paddle::LstmLayer¶
- LstmLayer takes 1 input layer with size * 4. Input layer is diveded into 4 equal parts: (input_s, input_ig, input_fg, input_og) - For each sequence [start, end] it performs the following computation: - output_{i} = actState(state_{i}) * actGate(outputGate_{i}) state_{i} = actInput(input_s_{i} + bias_s + output_{i-1} * recurrIW) * actGate(inputGate_{i}) + actGate(forgetGate_{i}) * state_{i-1} inputGate = input_ig_{i} + bias_ig + output_{i-1} * recurrIGW + state_{i-1} * inputCheck ouputGate = input_og_{i} + bias_og + output_{i-1} * recurrOGW + state_{i} * outputCheck forgetGate = input_fg_{i} + bias_fg + output_{i-1} * recurrFGW + state_{i-1} * forgetCheck - parameter[0] consists of (recurrIW, recurrIGW, recurrFGW, recurrOGW)
- baisParameter consists of (bias_s, bias_ig, bias_og, bias_fg, inputCheck, forgetCheck, outputCheck)
- actInput is defined by config active_type.
- actState is defined by config active_state_type.
- actGate is defined by config actvie_gate_type.
 - There are two ways to compute, namely one sequence by one sequence or one batch by one batch. By default and no setting pre_batch_state true, it will compute batch by batch. - The formula in the paper is as follows: \[\begin{split} i_t = \sigma(W_{xi}x_{t} + W_{hi}h_{t-1} + W_{ci}c_{t-1} + b_i) \\ f_t = \sigma(W_{xf}x_{t} + W_{hf}h_{t-1} + W_{cf}c_{t-1} + b_f) \\ \tilde{c_t} = tanh (W_{xc}x_t+W_{hc}h_{t-1} + b_c) \\ o_t = \sigma(W_{xo}x_{t} + W_{ho}h_{t-1} + W_{co}c_t + b_o) \\ c_t = f_t * c_{t-1} + i_t * \tilde{c_t} \\ h_t = o_t tanh(c_t) \end{split}\]- The weight ([size, 4*size]) contains \(W_{hi}, W_{hf}, W_{hc}, W_{ho}\). The bias contains \(b_i, b_f, b_c, b_o\) and \(W_{ci}, W_{cf}, W_{co}\). - Note
- These \(W_{xi}x_{t}, W_{xf}x_{t}, W_{xc}x_{t}, W_{xo}x_{t}\) operations on the input sequence were NOT included in LstmLayer. So users should use fc_layer or mixed_layer before lstm_later.
 - Inherits from paddle::Layer, paddle::LstmCompute - Subclassed by paddle::MDLstmLayer - Public Functions - 
LstmLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void resetState()¶
- Reset the internal state variables. Allocate them if they have not been allocated. This function need to called before Layer::forward() for generating sequence. - This is used for sequence generation. When generating sequence, the calculation at current timestamp depends on the state from previous timestamp. The model needs to keep the information about the previous timestamp in the state variables. Layers such as RecurrentLayer, LstmLayer and ContextLayer have state variables. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Get layer state. - Return
- A copy of internal state.
 
 - Protected Functions - 
void forwardSequence(int batchSize, size_t numSequences, const int *starts, MatrixPtr inputValue)¶
- Compute lstm forward one sequence by one sequence. - Parameters
- batchSize-- The batchSize is not equal to the batch_size in the config file. It is the total words number of all samples in this forward batch. 
- numSequences-- The sample number. It is equal to the batch_size in the config file. 
- starts-- Each start position of each samples. 
- inputValue-- The input values. 
 
 
 - 
void backwardSequence(int batchSize, size_t numSequences, const int *starts, MatrixPtr inputGrad)¶
- Compute lstm backward one sequence by one sequence. 
 - 
void forwardBatch(int batchSize, size_t numSequences, const int *starts, MatrixPtr inputValue)¶
- Compute lstm forward one batch by one batch. The batch value is reorganized by SequenceToBatch class. The batch output value will be convert into sequence value after finishing forward. Here, one batch contains one word of each sample. If the length of each sample is not equality, the batch will not pads zero and contains less words. The total batch numbers are the max length of the sequence. The details can refer to SequenceToBatch class. On GPU mode, it will launch GPU kernel for loop. - for (int i = 0; i < numBatch(max_sequence_length); ++i) { compute one batch. } 
 - 
void backwardBatch(int batchSize, size_t numSequences, const int *starts, MatrixPtr inputGrad)¶
- Compute lstm backward one batch by one batch. 
 - 
void forwardSeqParallel(int batchSize, size_t numSequences, const int *starts, MatrixPtr inputValue)¶
- This function only supports GPU. It not need to reorganize input into batch value. It will launch one kernel to parallelly compute forward propagation in sequence level. 
 - 
void backwardSeqParallel(int batchSize, size_t numSequences, const int *starts, MatrixPtr inputGrad)¶
- Backward propagation corresponding to forwardSeqParallel. 
 - 
void getPrevBatchOutput(size_t numSequences)¶
- This function is used for sequence generation and get output after forwardBatch. 
 - 
void getPrevBatchState(size_t numSequences)¶
- This function is used for sequence generation and get state after forwardBatch. 
 - Protected Attributes - 
std::unique_ptr<Weight> weight_¶
- Learned parameters, shape: (size, 4*size). The weight ([size, 4*size]) contains \(W_{hi}, W_{hf}, W_{hc}, W_{ho}\). 
 - 
std::unique_ptr<Weight> bias_¶
- Learned bias parameter, shape: (1, 7 * size). The bias contains \(b_i, b_f, b_c, b_o\) and \(W_{ci}, W_{cf}, W_{co}\). 
 - 
bool reversed_¶
- Whether it is reversed lstm. 
 - 
bool useBatch_¶
- Whether to use batch method to compute. 
 - 
bool useSeqParallel_¶
- Whether to use sequence parallell method to compute. 
 - 
std::unique_ptr<SequenceToBatch> batchValue_¶
- batchValue_ is used in method of batch calculation. It stores the batch value after reorganized input. 
 - 
std::unique_ptr<SequenceToBatch> batchGrad_¶
- The gradient of batchValue_. 
 
LstmStepLayer¶
- 
class paddle::LstmStepLayer¶
- Inherits from paddle::Layer, paddle::LstmCompute - Public Functions - 
LstmStepLayer(const LayerConfig &config)¶
 - 
~LstmStepLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
LstmCompute¶
- 
class paddle::LstmCompute¶
- Subclassed by paddle::LstmLayer, paddle::LstmStepLayer - Public Functions - 
void init(LayerConfig &config)¶
 - template <bool useGpu>
- 
void forwardBatch(hl_lstm_value value, int frameSize, int batchSize)¶
- LstmLayer batch compute API (forwardBatch, backwardBatch). If use batch compute api, lstm value(and grad) need to be batch structure. Compute order: forwardBatch: for 0 <= id < numBatch backwardBatch: for numBatch > id >= 0 
 - template <bool useGpu>
- 
void backwardBatch(hl_lstm_value value, hl_lstm_grad grad, int frameSize, int batchSize)¶
 - template <bool useGpu>
- 
void forwardOneSequence(hl_lstm_value value, int frameSize)¶
- LstmLayer sequence compute API (forwardOneSequence, backwardOneSequence). Compute order(for each sequence): forwardOneSequence: if (!reversed) for 0 <= seqId < seqLength if (reversed) for seqLength > seqId >= 0 backwardOneSequence: if (!reversed) for seqLength > seqId >= 0 if (reversed) for 0 <= seqId < seqLength 
 - template <bool useGpu>
- 
void backwardOneSequence(hl_lstm_value value, hl_lstm_grad grad, int frameSize)¶
 - template <>
- 
void forwardOneSequence(hl_lstm_value value, int frameSize)¶
 - template <>
- 
void backwardOneSequence(hl_lstm_value value, hl_lstm_grad grad, int frameSize)¶
 - template <>
- 
void forwardBatch(hl_lstm_value value, int frameSize, int batchSize)¶
 - template <>
- 
void backwardBatch(hl_lstm_value value, hl_lstm_grad grad, int frameSize, int batchSize)¶
 - template <>
- 
void forwardBatch(hl_lstm_value value, int frameSize, int batchSize)
 - template <>
- 
void backwardBatch(hl_lstm_value value, hl_lstm_grad grad, int frameSize, int batchSize)
 - template <>
- 
void forwardOneSequence(hl_lstm_value value, int frameSize)
 - template <>
- 
void backwardOneSequence(hl_lstm_value value, hl_lstm_grad grad, int frameSize)
 - Public Members - 
hl_activation_mode_t activeNode_¶
 - 
hl_activation_mode_t activeGate_¶
 - 
hl_activation_mode_t activeState_¶
 
- 
void 
MDLSTM¶
MDLstmLayer¶
- 
class paddle::MDLstmLayer¶
- Inherits from paddle::LstmLayer - Public Functions - 
MDLstmLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Functions - 
void forwardOneSequence(int start, CoordIterator &coordIter)¶
 - 
void backwardOneSequence(int start, CoordIterator &coordIter)¶
 - 
void forwardGate2OutputSequence(int start, CoordIterator &coordIter)¶
 - 
void backwardGate2OutputSequence(int start, CoordIterator &coordIter)¶
 - Protected Attributes - 
std::unique_ptr<ActivationFunction> activationGate_¶
 - 
std::unique_ptr<ActivationFunction> activationState_¶
 - 
int numDims_¶
 - 
size_t numBlocks_¶
 - 
std::vector<bool> directions_¶
 - 
std::vector<int> delays_¶
 - 
std::vector<std::vector<int>> dimsV_¶
 
- 
CoordIterator¶
- 
class paddle::CoordIterator¶
- Public Functions - 
void step(size_t d, bool reversed)¶
 - 
CoordIterator(std::vector<int> dim, std::vector<bool> directions)¶
 - 
CoordIterator &operator++()¶
 - 
CoordIterator &operator--()¶
 - 
std::vector<int> &curPos()¶
 - 
int offset()¶
 - 
int offset(const std::vector<int> &pos)¶
 - 
std::vector<int> &begin()¶
 - 
std::vector<int> &rbegin()¶
 - 
bool end()¶
 - 
bool getPrePos(const std::vector<int> &delays, int idx, std::vector<int> &prePos)¶
 - 
bool getNextPos(const std::vector<int> &delays, int idx, std::vector<int> &nextPos)¶
 
- 
void 
GRU¶
GatedRecurrentLayer¶
- 
class paddle::GatedRecurrentLayer¶
- Please refer to “Junyoung Chung, Empirical Evaluation of Gated Recurrent Neural Networks on Sequence Modeling”. - GatedRecurrentLayer takes 1 input layer with size * 3. Input layer is diveded into 3 equal parts: (xz_t, xr_t, xi_t). parameter and biasParameter is also diveded into 3 equal parts: - parameter consists of (U_z, U_r, U)
- baisParameter consists of (bias_z, bias_r, bias_o)
 \[\begin{split} update \ gate: z_t = actGate(xz_t + U_z * h_{t-1} + bias_z) \\ reset \ gate: r_t = actGate(xr_t + U_r * h_{t-1} + bias_r) \\ output \ candidate: {h}_t = actNode(xi_t + U * dot(r_t, h_{t-1}) + bias_o) \\ hidden \ activation: h_t = dot((1-z_t), h_{t-1}) + dot(z_t, {h}_t) \\ \end{split}\]- The config file is grumemory. - Note
- dot denotes “element-wise multiplication”.
- actNode is defined by config active_type
- actGate is defined by config actvie_gate_type
 
 - Inherits from paddle::Layer, paddle::GruCompute - Public Functions - 
GatedRecurrentLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void resetState()¶
- Reset the internal state variables. Allocate them if they have not been allocated. This function need to called before Layer::forward() for generating sequence. - This is used for sequence generation. When generating sequence, the calculation at current timestamp depends on the state from previous timestamp. The model needs to keep the information about the previous timestamp in the state variables. Layers such as RecurrentLayer, LstmLayer and ContextLayer have state variables. 
 - 
virtual void setState(LayerStatePtr state)¶
- Set layer state. 
 - 
virtual LayerStatePtr getState()¶
- Get layer state. - Return
- A copy of internal state.
 
 - Protected Functions - Protected Attributes - 
bool reversed_¶
 - 
bool useBatch_¶
 - 
std::unique_ptr<SequenceToBatch> batchValue_¶
 - 
std::unique_ptr<SequenceToBatch> batchGrad_¶
 - 
std::unique_ptr<ActivationFunction> activationGate_¶
 
GruStepLayer¶
- 
class paddle::GruStepLayer¶
- GruStepLayer is like GatedRecurrentLayer, but used in recurrent layer group. GruStepLayer takes 2 input layer. - input[0] with size * 3 and diveded into 3 equal parts: (xz_t, xr_t, xi_t).
- input[1] with size: {prev_out}.
 - parameter and biasParameter is also diveded into 3 equal parts: - parameter consists of (U_z, U_r, U) 
- baisParameter consists of (bias_z, bias_r, bias_o) \[\begin{split} update \ gate: z_t = actGate(xz_t + U_z * prev_out + bias_z) \\ reset \ gate: r_t = actGate(xr_t + U_r * prev_out + bias_r) \\ output \ candidate: {h}_t = actNode(xi_t + U * dot(r_t, prev_out) + bias_o) \\ output: h_t = dot((1-z_t), prev_out) + dot(z_t, prev_out) \end{split}\]
 - The config file api if gru_step_layer. - Note
- dot denotes “element-wise multiplication”.
- actNode is defined by config active_type
- actGate is defined by config actvie_gate_type
 
 - Inherits from paddle::Layer, paddle::GruCompute - Public Functions - 
GruStepLayer(const LayerConfig &config)¶
 - 
~GruStepLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
GruCompute¶
- 
class paddle::GruCompute¶
- Subclassed by paddle::GatedRecurrentLayer, paddle::GruStepLayer - Public Functions - 
void init(LayerConfig &config)¶
 - template <bool useGpu>
- 
void forward(hl_gru_value value, int frameSize, int batchSize = 1)¶
 - template <bool useGpu>
- 
void backward(hl_gru_value value, hl_gru_grad grad, int frameSize, int batchSize = 1)¶
 - template <>
- 
void forward(hl_gru_value value, int frameSize, int batchSize)¶
 - template <>
- 
void backward(hl_gru_value value, hl_gru_grad grad, int frameSize, int batchSize)¶
 - template <>
- 
void forward(hl_gru_value value, int frameSize, int batchSize)
 - template <>
- 
void backward(hl_gru_value value, hl_gru_grad grad, int frameSize, int batchSize)
 
- 
void 
Recurrent Layer Group¶
AgentLayer¶
- 
class paddle::AgentLayer¶
- AgentLayer use as a virtual input of another layer in config, before execute forward/backward, setRealLayer() should be called to set one and only one real layer - Inherits from paddle::Layer - Subclassed by paddle::SequenceAgentLayer - Public Functions - 
AgentLayer(const LayerConfig &config)¶
 - 
~AgentLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void setRealLayer(LayerPtr layer, int numSamples = 0)¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
SequenceAgentLayer¶
- 
class paddle::SequenceAgentLayer¶
- like AgentLayer, but use first numSamples sequences - Inherits from paddle::AgentLayer - Public Functions - 
SequenceAgentLayer(const LayerConfig &config)¶
 - 
~SequenceAgentLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
GatherAgentLayer¶
- 
class paddle::GatherAgentLayer¶
- Like AgentLayer, but it can gather many real layers. Each real layer give a few rows of a sequence, after gather all real layers, GatherAgentLayer collect a complete sequence. - Inherits from paddle::Layer - Subclassed by paddle::SequenceGatherAgentLayer - Public Functions - 
GatherAgentLayer(const LayerConfig &config)¶
 - 
virtual ~GatherAgentLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void copyIdAndSequenceInfo(const Argument &input, const IVectorPtr &allIds, const std::vector<int> &idIndex)¶
 - 
void addRealLayer(LayerPtr layer)¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
std::vector<LayerPtr> realLayers_¶
 - 
std::vector<IVectorPtr> idsVec_¶
 - 
IVectorPtr allIds_¶
 - 
std::vector<int> idIndex_¶
 
- 
SequenceGatherAgentLayer¶
- 
class paddle::SequenceGatherAgentLayer¶
- Like GatherAgentLayer, but select a few sequence in real layer. ids in addRealLayer() are the ids of selected sequence. It’s used to reorder sequence output. - Inherits from paddle::GatherAgentLayer - Public Functions - 
SequenceGatherAgentLayer(const LayerConfig &config)¶
 - 
virtual ~SequenceGatherAgentLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
ScatterAgentLayer¶
- 
class paddle::ScatterAgentLayer¶
- Like AgentLayer, but only select a few rows in real layer. [idIndex, idIndex + idSize) of ids in setRealLayerAndOutput() are the selected row ids. It’s used to scatter one layer’s output to many small submodels. ScatterAgentLayer can support ids real layer, if it is, the agent will select a few ids in real layer. - Inherits from paddle::Layer - Subclassed by paddle::SequenceScatterAgentLayer - Public Functions - 
ScatterAgentLayer(const LayerConfig &config)¶
 - 
virtual ~ScatterAgentLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void setRealLayer(LayerPtr layer, const std::vector<int> &ids, bool copyId = false)¶
- set real layer in generation - Parameters
- layer[input]-- realLayer 
- ids[input]-- row id in real layer 
- copyId[input]-- whether to copy a cpu version of ids, false(default) in ScatterAgentLayer, and true in SequenceScatterAgentLayer. 
 
 
 - 
void setRealLayerAndOutput(LayerPtr layer, const Argument &outArg, const IVectorPtr &ids, int idIndex, int idSize)¶
 - 
void setSequenceStartPositions(const ICpuGpuVectorPtr &sequenceStartPositions, int seqStartPosIndex, int numSequences)¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
SequenceScatterAgentLayer¶
- 
class paddle::SequenceScatterAgentLayer¶
- Like ScatterAgentLayer, but select a few sequence in real layer. ids in setRealLayer() or setRealLayerAndOutput() are the ids of selected sequence. It’s used to reorder sequence input. - Inherits from paddle::ScatterAgentLayer - Public Functions - 
SequenceScatterAgentLayer(const LayerConfig &config)¶
 - 
virtual ~SequenceScatterAgentLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
GetOutputLayer¶
- 
class paddle::GetOutputLayer¶
- Inherits from paddle::Layer - Public Functions - 
GetOutputLayer(const LayerConfig &config)¶
 - 
~GetOutputLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Mixed Layer¶
- 
class paddle::MixedLayer¶
- A mixed layer has multiple input layers. Each input layer was processed by a Projection or Operator. The results of all projections or Operators are summed together with bias (if configured), and then go through an activation function and dropout (if configured). - The config file api is mixed_layer. - Inherits from paddle::Layer - Public Functions - 
MixedLayer(const LayerConfig &config)¶
 - 
~MixedLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void prefetch()¶
- If use sparse row matrix as parameter, prefetch feature ids in input label. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void resetState()¶
- Reset the internal state variables. Allocate them if they have not been allocated. This function need to called before Layer::forward() for generating sequence. - This is used for sequence generation. When generating sequence, the calculation at current timestamp depends on the state from previous timestamp. The model needs to keep the information about the previous timestamp in the state variables. Layers such as RecurrentLayer, LstmLayer and ContextLayer have state variables. 
 - 
virtual void setState(LayerStatePtr state)¶
- setState() should be called after getState(). Argument state consists of all projections states. 
 - 
virtual LayerStatePtr getState()¶
- Return state which consists of all projections states. 
 
- 
DotMulProjection¶
- 
class paddle::DotMulProjection¶
- DotMulProjection performs element-wise multiplication with weight: \[ out.row[i] += in.row[i] .* weight \]where \(.*\) means element-wise multiplication.- The config file api is dotmul_projection. - Inherits from paddle::Projection - Public Functions - 
DotMulProjection(const ProjectionConfig &config, const ParameterPtr ¶meter, bool useGpu)¶
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 
- 
DotMulOperator¶
- 
class paddle::DotMulOperator¶
- DotMulOperator takes two inputs, performs element-wise multiplication: \[ out.row[i] += scale * (in1.row[i] .* in2.row[i]) \]where \(.*\) means element-wise multiplication, and scale is a config scalar, its default value is one.- The config file api is dotmul_operator. - Inherits from paddle::Operator 
FullMatrixProjection¶
- 
class paddle::FullMatrixProjection¶
- FullMatrixProjection performs full matrix multiplication: \[ out.row[i] += in.row[i] * weight \]- The config file api is full_matrix_projection. - Inherits from paddle::Projection - Public Functions - 
FullMatrixProjection(const ProjectionConfig &config, const ParameterPtr ¶meter, bool useGpu)¶
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 
- 
IdentityProjection¶
- 
class paddle::IdentityProjection¶
- IdentityProjection performs addition: \[ out.row[i] += in.row[i] \]- The config file api is identity_projection. - Inherits from paddle::Projection - Public Functions - 
IdentityProjection(const ProjectionConfig &config, const ParameterPtr ¶meter, bool useGpu)¶
- Constructed function. - Note
- IdentityProjection should not have any parameter.
 
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 
- 
IdentityOffsetProjection¶
- 
class paddle::IdentityOffsetProjection¶
- IdentityOffsetProjection likes IdentityProjection, but layer size may be smaller than input size. It selects dimensions [offset, offset+layer_size) from input to perform addition: \[ out.row[i] += in.row[i + \textrm{offset}] \]- The config file api is identity_projection. - Inherits from paddle::Projection - Public Functions - 
IdentityOffsetProjection(const ProjectionConfig &config, const ParameterPtr ¶meter, bool useGpu)¶
- Constructed function. - Note
- IdentityOffsetProjection should not have any parameter.
 
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 
- 
TableProjection¶
- 
class paddle::TableProjection¶
- Table projection takes index data input. It select rows from parameter where row_id is in input_ids: \[ out.row[i] += table.row[ids[i]] \]where \(out\) is out, \(table\) is parameter, \(ids\) is input_ids, and \(i\) is row_id.- The config file api is table_projection. - Note
- If \(ids[i] = -1\), it will be ignored.
 - Inherits from paddle::Projection - Public Functions - 
TableProjection(const ProjectionConfig &config, const ParameterPtr ¶meter, bool useGpu)¶
 - 
virtual void prefetch(const Argument *in)¶
- If use sparse row matrix as parameter, prefetch feature ids in input label. 
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 
TransposedFullMatrixProjection¶
- 
class paddle::TransposedFullMatrixProjection¶
- TransposedFullMatrixProjection performs full matrix multiplication: out.row[i] += in.row[i] * weight.transpose. - The config file api is trans_full_matrix_projection. - Inherits from paddle::Projection - Public Functions - 
TransposedFullMatrixProjection(const ProjectionConfig &config, ParameterPtr parameter, bool useGPu)¶
 - 
virtual void forward()¶
 - 
virtual void backward(const UpdateCallback &callback)¶
 
- 
Aggregate Layers¶
Aggregate¶
AverageLayer¶
- 
class paddle::AverageLayer¶
- A layer for “internal average” for sequence input. Input: one or more sequences. Each sequence contains some instances. If AverageLevel = kNonSeq: Output: output size is the number of input sequences (NOT input instances) output[i] = average_{for each instance in this sequence}{input[i]} If AverageLevel = kSeq: Check input sequence must has sub-sequence Output: output size is the number of input sub-sequences output[i] = average_{for each instance in this sub-sequence}{input[i]} - Inherits from paddle::Layer - Public Types - Public Functions - 
AverageLayer(const LayerConfig &config)¶
 - 
~AverageLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
MaxLayer¶
- 
class paddle::MaxLayer¶
- A layer for “internal max” for sequence input. Input: one or more sequences. Each sequence contains some instances. If MaxLevel = kNonSeq: Output: output size is the number of input sequences (NOT input instances) output[i] = max_{for each instance in this sequence}{input[i]} If MaxLevel = kSeq: Check input sequence must has sub-sequence Output: output size is the number of input sub-sequences output[i] = max_{for each instance in this sub-sequence}{input[i]} - Inherits from paddle::Layer - Public Functions - 
MaxLayer(const LayerConfig &config)¶
 - 
~MaxLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
SequenceLastInstanceLayer¶
- 
class paddle::SequenceLastInstanceLayer¶
- A layer for extracting the last instance of the input sequence. Input: a sequence If SequenceLevel = kNonseq: Output: a sequence containing only the last instance of the input sequence If SequenceLevel = kSeq: Check input sequence must has sub-sequence Output: a sequence containing only the last instance of each sub-sequence of the input sequence - Inherits from paddle::Layer - Public Functions - 
SequenceLastInstanceLayer(const LayerConfig &config)¶
 - 
~SequenceLastInstanceLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Concat¶
ConcatenateLayer¶
- 
class paddle::ConcatenateLayer¶
- A concatenate layer has multiple input layers. It concatenates rows of each input as one row for the output of this layer and apply activation. - Inherits from paddle::Layer - Public Functions - 
ConcatenateLayer(const LayerConfig &config)¶
 - 
~ConcatenateLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
ConcatenateLayer2¶
- 
class paddle::ConcatenateLayer2¶
- concat2 layer is like concat layer, but each input layer was processed by a Projection. - Inherits from paddle::Layer - Public Functions - 
ConcatenateLayer2(const LayerConfig &config)¶
 - 
~ConcatenateLayer2()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
std::vector<std::unique_ptr<Projection>> projections_¶
 - 
std::vector<std::pair<size_t, size_t>> projCol_¶
 
- 
SequenceConcatLayer¶
- 
class paddle::SequenceConcatLayer¶
- A layer for concatenating the first sequence with the second sequence following the first Input: two sequences each containing some instances Output: a concatenated sequence of the two input sequences - Inherits from paddle::Layer - Public Functions - 
SequenceConcatLayer(const LayerConfig &config)¶
 - 
~SequenceConcatLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Subset¶
SubSequenceLayer¶
- 
class paddle::SubSequenceLayer¶
- A layer for taking the subsequence according to given offset and size Input: original sequence, offset, size Output: subsequence - Inherits from paddle::Layer - Public Functions - 
SubSequenceLayer(const LayerConfig &config)¶
 - 
~SubSequenceLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Reshaping Layers¶
BlockExpandLayer¶
- 
class paddle::BlockExpandLayer¶
- Expand feature map to minibatch matrix. - matrix width is: blockH_ * blockW_ * channels_ 
- matirx height is: outputH_ * outputW_ \[\begin{split} outputH\_ = 1 + (2 * paddingH\_ + imgSizeH\_ - blockH\_ + strideH\_ - 1) / strideH\_ \\ outputW\_ = 1 + (2 * paddingW\_ + imgSizeW\_ - blockW\_ + strideW\_ - 1) / strideW\_ \end{split}\]
 - The expand method is the same with ExpandConvLayer, but saved the transposed value. After expanding, output_.sequenceStartPositions will store timeline. The number of time steps are outputH_ * outputW_ and the dimension of each time step is blockH_ * blockW_ * channels_. This layer can be used after convolution neural network, and before recurrent neural network. - The config file api is block_expand_layer. - Inherits from paddle::Layer - Public Functions - 
BlockExpandLayer(const LayerConfig &config)¶
 - 
~BlockExpandLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Functions - 
size_t getBlockNum()¶
- Calculate outputH_ and outputW_ and return block number which actually is time steps. - Return
- time steps, outoutH_ * outputW_.
 
 
ExpandLayer¶
- 
class paddle::ExpandLayer¶
- A layer for “Expand Dense data or (sequence data where the length of each sequence is one) to sequence data.” - It should have exactly 2 input, one for data, one for size: - first one for data- If ExpandLevel = kNonSeq: dense data
- If ExpandLevel = kSeq: sequence data where the length of each sequence is one
 
- second one only for sequence info- should be sequence data with or without sub-sequence.
 
 - And the output size is the batch size(not instances) of second input. - The config file api is expand_layer. - Inherits from paddle::Layer - Public Functions - 
ExpandLayer(const LayerConfig &config)¶
 - 
~ExpandLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Types - Protected Attributes - 
int type_¶
- store the ExpandLevel 
 - 
IVectorPtr cpuExpandStartsPos_¶
- expanded sequenceStartPositions or subSequenceStartPositions of input[1] 
 - 
IVectorPtr expandStartsPos_¶
- point to cpuExpandStartsPos_ when useGpu_ is false, copy from cpuExpandStartsPos_ when useGpu_ is true 
 
- first one for data
FeatureMapExpandLayer¶
- 
class paddle::FeatureMapExpandLayer¶
- A layer for expanding a batch of images to feature maps. Each data of the input is a 2 dimensional matrix. Each element of the matrix is replicated num_filters times to create a feature map with num_filters channels. - Input: Input one should be dense image data.
- Output: expanded fature maps. \[ y.row[i] = x.row[i \mod x.width], i = 0,1,..., (x.width * num\_filters - 1) \]For example, num_filters = 4:x = [a1,a2; b1,b2] y = [a1, a2, a1, a2, a1, a2, a1, a2; b1, b2, b1, b2, b1, b2, b1, b2;] 
 - Inherits from paddle::Layer - Public Functions - 
FeatureMapExpandLayer(const LayerConfig &config)¶
 - 
~FeatureMapExpandLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
ResizeLayer¶
- 
class paddle::ResizeLayer¶
- A layer for resizing a minibatch matrix h*w to h’*w’. - Note
- origin matrix height * witdth) resize matrix: (height * width / size) * size
 - Inherits from paddle::Layer - Public Functions - 
ResizeLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
SequenceReshapeLayer¶
- 
class paddle::SequenceReshapeLayer¶
- A layer for reshaping the sequence Input: a sequence Output: a sequence - Inherits from paddle::Layer - Public Functions - 
SequenceReshapeLayer(const LayerConfig &config)¶
 - 
~SequenceReshapeLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Math Layers¶
AddtoLayer¶
- 
class paddle::AddtoLayer¶
- This layer just simply add all input layers together, then activate the sum inputs. Each input of this layer should be the same size, which is also the output size of this layer. \[ y=f(\sum_{i}x_i + b) \]where \(y\) is output, \(x\) is input, \(b\) is bias, and \(f\) is activation function.- The config file api is addto_layer. - Inherits from paddle::Layer - Public Functions - 
AddtoLayer(const LayerConfig &config)¶
 - 
~AddtoLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization of AddtoLayer. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. - Note
- There is no weight matrix for each input, because it just a simple add operation.
 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. 
 
- 
ConvexCombinationLayer¶
- 
class paddle::ConvexCombinationLayer¶
- A layer for weighted sum of vectors, which is used in NEURAL MACHINE TRANSLATION BY JOINTLY LEARNING TO ALIGN AND TRANSLATE. - Input: the the size of the first input is weightDim, and the size of the second input is weightdim * dataDim.
- Output: the sizeof the output is dataDim \[ out(j) = \sum_{i}(in0(i) * in1(i,j + i * dataDim)), i = 0,1,...,(weightDim-1); j = 0, 1,...,(dataDim-1) \]Note that the above computation is for one sample. Multiple samples are processed in one batch.
 - The config file api is linear_comb_layer. - Inherits from paddle::Layer - Public Functions - 
ConvexCombinationLayer(const LayerConfig &config)¶
 - 
~ConvexCombinationLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
InterpolationLayer¶
- 
class paddle::InterpolationLayer¶
- A layer for linear interpolation with two inputs, which is used in NEURAL TURING MACHINE. \[ y.row[i] = w[i] * x_1.row[i] + (1 - w[i]) * x_2.row[i] \]where \(x_1\) and \(x_2\) are two (batchSize x dataDim) inputs, \(w\) is (batchSize x 1) weight vector, and \(y\) is (batchSize x dataDim) output.- The config file api is interpolation_layer. - Inherits from paddle::Layer - Public Functions - 
InterpolationLayer(const LayerConfig &config)¶
 - 
~InterpolationLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
MultiplexLayer¶
- 
class paddle::MultiplexLayer¶
- This layer multiplex multiple layers according to the index, which is provided by the first input layer. - Input[0]: the index of the layer to output of size batchSize.
- Input[1:N]; the candidate output data. For each index i from 0 to batchSize -1, the output is the i-th row of the (index[i] + 1)-th layer.
 - For each i-th row of output: \[ y[i][j] = x_{x_{0}[i] + 1}[i][j], j = 0,1, ... , (x_{1}.width - 1) \]where, y is output. \(x_{k}\) is the k-th input layer and \(k = x_{0}[i] + 1\).- Inherits from paddle::Layer - Public Functions - 
MultiplexLayer(const LayerConfig &config)¶
 - 
~MultiplexLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes 
OuterProdLayer¶
- 
class paddle::OuterProdLayer¶
- A layer for computing the outer product of two vectors. - Note
- used in NEURAL TURING MACHINE Input1: vector (batchSize * dim1) Input2: vector (batchSize * dim2) Output: a matrix: (batchSize * (dim1*dim2))
 - Inherits from paddle::Layer - Public Functions - 
OuterProdLayer(const LayerConfig &config)¶
 - 
~OuterProdLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
PowerLayer¶
- 
class paddle::PowerLayer¶
- This layer applys a power function to a vector element-wise, which is used in NEURAL TURING MACHINE. \[ y = x^w \]where \(x\) is a input vector, \(w\) is scalar weight, and output \(y\) is a vector.- The config file api is power_layer. - Inherits from paddle::Layer - Public Functions - 
PowerLayer(const LayerConfig &config)¶
 - 
~PowerLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
ScalingLayer¶
- 
class paddle::ScalingLayer¶
- A layer for each row of a matrix, multiplying with a element of a vector, which is used in NEURAL TURING MACHINE. \[ y.row[i] = w[i] * x.row[i] \]where \(x\) is (batchSize x dataDim) input, \(w\) is (batchSize x 1) weight vector, and \(y\) is (batchSize x dataDim) output.- The config file api is scaling_layer. - Inherits from paddle::Layer - Public Functions - 
ScalingLayer(const LayerConfig &config)¶
 - 
~ScalingLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
SlopeInterceptLayer¶
- 
class paddle::SlopeInterceptLayer¶
- A layer for applying a slope and an intercept to the input element-wise. This layer is used in NEURAL TURING MACHINE. \[ y = ax + b \]- Note
- There is no activation and weight in this layer.
 - Here, a is scale and b is offset, which are provided as attributes of the layer. - The config file api is slope_intercept_layer. - Inherits from paddle::Layer - Public Functions - 
SlopeInterceptLayer(const LayerConfig &config)¶
 - 
~SlopeInterceptLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
TensorLayer¶
- 
class paddle::TensorLayer¶
- TensorLayer takes two input vectors. \[ y_{i} = x_{1} * W_{i} * x_{2}^{\rm T}, i=0, 1, ...,K-1 \].- \(x_{1}\): the first input, size is M.
- \(x_{2}\): the second input, size is N.
- y: output, size is K.
- \(y_{i}\): i-th element of y.
- \(W_{i}\): the i-th learned weight, dimensions: [M, N].
- \(x_{2}^{\rm T}\): the transpose of \(x_{2}\).
 - The config file api is tensor_layer. - Inherits from paddle::Layer - Public Functions - 
TensorLayer(const LayerConfig &config)¶
 - 
~TensorLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
TransLayer¶
- 
class paddle::TransLayer¶
- A layer for transposition. \[ y = x^\mathrm{T} \]where \(x\) is (M x N) input, and \(y\) is (N x M) output.- The config file api is trans_layer. - Inherits from paddle::Layer - Public Functions - 
TransLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Sampling Layers¶
MultinomialSampler¶
- 
class paddle::MultinomialSampler¶
- Given the probability of N objects, the sampler random select one of the object. - The space requirement is O(N)=O(N * sizeof(Interval)). The computational complexity of generate one sample is O(1). - Note
- : prob does not have to be unnormalized.
 - Public Functions - 
MultinomialSampler(const real *prob, int size)¶
 - template <typename URNG>
- 
int gen(URNG &g)¶
- Generate a random sample. - Return
- Random integer.
- Parameters
- g-- is a random number engine. See <random>. 
 
 
 - Protected Functions - template <typename Rand>
- 
int gen1(Rand rand)¶
- Generation. - Return
- random int number or intervals_[random_int_number].otherId.
- Parameters
- rand-- rand is a real random number distribution for the range [0, size). 
 
 
 - Protected Attributes - 
std::uniform_real_distribution<double> rand_¶
 - 
struct Interval¶
 
MaxIdLayer¶
- 
class paddle::MaxIdLayer¶
- A layer for finding the id which has the maximal value for each sample. The result is stored in output_.ids. - The config file api is maxid_layer. - Inherits from paddle::Layer - Public Functions - 
MaxIdLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
SamplingIdLayer¶
- 
class paddle::SamplingIdLayer¶
- A layer for sampling id from multinomial distribution from the input layer. Sampling one id for one sample. The result is stored in output_.ids. - The config file api is sampling_id_layer. - Inherits from paddle::Layer - Public Functions - 
SamplingIdLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
Cost Layers¶
CostLayer¶
- 
class paddle::CostLayer¶
- Base class for a particular type of cost layer. This type of cost should have one data layer, one label layer and an optional weight layer as input. The derived class should implemnt forwardImp() and backwardImp() which calculate the cost for data and label. The weight is automatically handled by the base class. - Inherits from paddle::Layer - Subclassed by paddle::HuberTwoClass, paddle::MultiBinaryLabelCrossEntropy, paddle::MultiClassCrossEntropy, paddle::MultiClassCrossEntropyWithSelfNorm, paddle::SoftBinaryClassCrossEntropy, paddle::SumOfSquaresCostLayer - Public Functions - 
CostLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
LayerPtr getOutputLayer()¶
 - 
LayerPtr getLabelLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
- 
HuberTwoClass¶
- 
class paddle::HuberTwoClass¶
- Huber loss for robust 2-classes classification. - For label={0, 1}, let y=2*label-1. Given output f, the loss is: \[\begin{split} Loss = \left\{\begin{matrix} 4 * y * f & \textit{if} \ \ y* f < -1 \\ (1 - y * f)^2 & \textit{if} \ \ -1 < y * f < 1 \\ 0 & \textit{otherwise} \end{matrix}\right. \end{split}\]- Inherits from paddle::CostLayer - Public Functions - 
HuberTwoClass(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
LambdaCost¶
- 
class paddle::LambdaCost¶
- LambdaRank os a method for learning arbitrary information retrieval measures. It can be applied to any algorithm that learns through gradient descent. LambdaRank is a listwise method, in that the cost depends on the sorted order of the documents. LambdaRank gives the gradient of cost function: \[ \lambda_{ij} = \frac{1}{1 + e^{o_i - o_j}} \left| \Delta_{NDCG} \right| \]- [1] Christopher J.C. Burges, Robert Ragno, Quoc Viet Le. Learning to Rank with Nonsmooth Cost Functions. - Inherits from paddle::Layer - Public Functions - 
LambdaCost(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
LayerPtr getOutputLayer()¶
 - 
LayerPtr getScoreLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void onPassEnd()¶
- One pass is finished. 
 - 
real calcNDCG(const real *outputScore, const real *score, int size)¶
 - 
void calcGrad(const real *outputScore, const real *score, real *gradData, int size)¶
 
- 
MultiBinaryLabelCrossEntropy¶
- 
class paddle::MultiBinaryLabelCrossEntropy¶
- Cross entropy for multi binary labels. \[ cost[i] = -sum(label[i][j]*log(output[i][j]) + (1-label[i][j])*log(1-output[i][j])) \]- Inherits from paddle::CostLayer - Public Functions - 
MultiBinaryLabelCrossEntropy(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
MultiClassCrossEntropy¶
- 
class paddle::MultiClassCrossEntropy¶
- The cross-entropy loss for multi-class classification task. The loss function is: \[ L = - \sum_{i}{t_{k} * log(P(y=k))} \]- Inherits from paddle::CostLayer - Public Functions - 
MultiClassCrossEntropy(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
MultiClassCrossEntropyWithSelfNorm¶
- 
class paddle::MultiClassCrossEntropyWithSelfNorm¶
- The cross-entropy with self-normalization for multi-class classification. - The loss function is: \[ L = \sum_{i}[-log(P(x_{i})) + alpha * log(Z(x_{i})^2)] \]- The \(Z(x)\) is the softmax normalizer. - [1] Jacob Devlin, Rabih Zbib, Zhongqiang Huang, Thomas Lamar, Richard Schwartz, and John Makhoul. Fast and robust neural network joint models for statistical machine translation. In Proceedings of the ACL 2014 Conference. - Inherits from paddle::CostLayer - Public Functions - 
MultiClassCrossEntropyWithSelfNorm(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
RankingCost¶
- 
class paddle::RankingCost¶
- A cost layer for learning to rank (LTR) task. This layer contains at leat three inputs. \[\begin{split} C_{i,j} = -\tilde{P_{ij}} * o_{i,j} + log(1 + e^{o_{i,j}}) \\ o_{i,j} = o_i - o_j \\ \tilde{P_{i,j}} = \left \{0, 0.5, 1 \right \} \ or \ \left \{0, 1 \right \} \end{split}\]- [1]. Chris Burges, Tal Shaked, Erin Renshaw, et al. Learning to Rank useing Gradient Descent. - Inherits from paddle::Layer - Public Functions - 
RankingCost(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
LayerPtr getOutputLayer(size_t i)¶
 - 
LayerPtr getLabelLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void onPassEnd()¶
- One pass is finished. 
 
- 
SoftBinaryClassCrossEntropy¶
- 
class paddle::SoftBinaryClassCrossEntropy¶
- The cross-entropy for soft binary class. \[ L = \sum_i (\sum_j -y_j(i)*log(x_j(i))-(1-y_j(i))*log(1-x_j(i))) \]- Inherits from paddle::CostLayer - Public Functions - 
SoftBinaryClassCrossEntropy(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
SumOfSquaresCostLayer¶
- 
class paddle::SumOfSquaresCostLayer¶
- This cost layer compute Euclidean (L2) loss for real-valued regression tasks. \[ L = \frac{1}{2N} \sum_{i=1}^N {|| \hat{y}_i - y_i||_2^2} \]- Inherits from paddle::CostLayer - Public Functions - 
SumOfSquaresCostLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 
- 
CosSimLayer¶
- 
class paddle::CosSimLayer¶
- A layer for calculating cosine similarity between two vector \[ f(x,y)=scale\frac{x_1y_1+x_2y_2+...+x_ny_n}{\sqrt{x_1^2+x_2^2+... +x_n^2}\sqrt{y_1^2+y_2^2+...+y_n^2}} \].- Input1: A vector (batchSize * dataDim) *
- Input2: A vector (batchSize * dataDim) or (1 * dataDim) *
- Output: A vector (dataDim * 1)
 - The config file api is cos_sim. - Inherits from paddle::Layer - Public Functions - 
CosSimLayer(const LayerConfig &config)¶
 - 
~CosSimLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
CosSimVecMatLayer¶
- 
class paddle::CosSimVecMatLayer¶
- A layer for computing cosine similarity between a vector and each row of a matrix out[i] = cos_scale * cos(in1, in2(i,:));. - Input1: a vector (batchSize * dataDim) - Note
- used in NEURAL TURING MACHINE
 - Input2: a matrix in vector form (batchSize * (weightDim*dataDim)) - Output: a vector (batchSize * weightDim) - Inherits from paddle::Layer - Public Functions - 
CosSimVecMatLayer(const LayerConfig &config)¶
 - 
~CosSimVecMatLayer()¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 
CRFDecodingLayer¶
- 
class paddle::CRFDecodingLayer¶
- A layer for calculating the decoding sequence of sequential conditional random field model. The decoding sequence is stored in output_.ids It also calculate error, output_.value[i] is 1 for incorrect decoding or 0 for correct decoding) See LinearChainCRF.h for the detail of the CRF formulation. - Inherits from paddle::CRFLayer - Public Functions - 
CRFDecodingLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
std::unique_ptr<LinearChainCRF> crf_¶
 
- 
CRFLayer¶
- 
class paddle::CRFLayer¶
- A layer for calculating the cost of sequential conditional random field model. See class LinearChainCRF for the detail of the CRF formulation. - Inherits from paddle::Layer - Subclassed by paddle::CRFDecodingLayer - Public Functions - 
CRFLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Attributes - 
size_t numClasses_¶
 - 
ParameterPtr parameter_¶
 - 
std::vector<LinearChainCRF> crfs_¶
 - 
LayerPtr weightLayer_¶
 - 
real coeff_¶
 
- 
CTCLayer¶
- 
class paddle::CTCLayer¶
- Inherits from paddle::Layer - Public Functions - 
CTCLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
void backwardImp(const UpdateCallback &callback, const Argument &softmaxSeqs, const Argument &labelSeqs)¶
 
- 
HierarchicalSigmoidLayer¶
- 
class paddle::HierarchicalSigmoidLayer¶
- Organize the classes into a binary tree. At each node, a sigmoid function is used to calculate the probability of belonging to the right branch. This idea is from “F. Morin, Y. Bengio (AISTATS 05): Hierarchical Probabilistic Neural Network Language Model.” - Here we uses a simple way of making the binary tree. Assuming the number of classes C = 6, The classes are organized as a binary tree in the following way: - *-*-*- 2 | | |- 3 | | | |-*- 4 | |- 5 | |-*- 0 |- 1 - where * indicates an internal node, and each leaf node represents a class. - Node 0 ... C-2 are internal nodes.
- Node C-1 ... 2C-2 are leaf nodes.
- Class c is represented by leaf node \(c+C-1\).
 - We assign an id for each node: - the id of root be 0.
- the left child of a node i is 2*i+1.
- the right child of a node i is 2*i+2.
 - It’s easy to see that: - the parent of node i is \(\left\lfloor(i-1)/2\right\rfloor\).
- the j-th level ancestor of node i is \(\left\lfloor(i+1)/2^{j+1}\right\rfloor - 1\).
- A node i is a left child of its parent if \((i-1)\%2==0\).
 - The config file api is hsigmod_layer. - Inherits from paddle::Layer - Public Functions - 
HierarchicalSigmoidLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - Protected Functions - 
LayerPtr getLabelLayer()¶
- The last of inputs is label layer. 
 
LinearChainCRF¶
- 
class paddle::LinearChainCRF¶
- Public Functions - 
LinearChainCRF(int numClasses, real *para, real *grad)¶
- The size of para and grad must be \((numClasses + 2) * numClasses\). The first numClasses values of para are for starting weights ( \(a\)). The next numClasses values of para are for ending weights ( \(b\)), The remaning values are for transition weights ( \(w\)). - The probability of a state sequence s of length \(L\) is defined as: \(P(s) = (1/Z) exp(a_{s_1} + b_{s_L} + \sum_{l=1}^L x_{s_l} + \sum_{l=2}^L w_{s_{l-1},s_l})\) where \(Z\) is a normalization value so that the sum of \(P(s)\) over all possible sequences is \(1\), and \(x\) is the input feature to the CRF. 
 - 
real forward(real *x, int *s, int length)¶
- Calculate the negative log likelihood of s given x. The size of x must be length * numClasses. Each consecutive numClasses values are the features for one time step. 
 - 
void backward(real *x, real *dx, int *s, int length)¶
- Calculate the gradient with respect to x, a, b, and w. The gradient of x will be stored in dx. backward() can only be called after a corresponding call to forward() with the same x, s and length. - Note
- The gradient is added to dx and grad (provided at constructor).
 
 - 
void decode(real *x, int *s, int length)¶
- Find the most probable sequence given x. The result will be stored in s. 
 
- 
LinearChainCTC¶
- 
class paddle::LinearChainCTC¶
- Public Functions - 
LinearChainCTC(int numClasses, bool normByTimes)¶
 - 
real forward(real *softmaxSeq, int softmaxSeqLen, int *labelSeq, int labelSeqLen)¶
 - 
void backward(real *softmaxSeq, real *softmaxSeqGrad, int *labelSeq, int labelSeqLen)¶
 - Protected Functions - 
void segmentRange(int &start, int &end, int time)¶
 
- 
NCELayer¶
- 
class paddle::NCELayer¶
- Noise-contrastive estimation Implements the method in the following paper: A fast and simple algorithm for training neural probabilistic language models - Inherits from paddle::Layer - Public Functions - 
NCELayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
void prepareSamples()¶
 - 
virtual void prefetch()¶
- If use sparse row matrix as parameter, prefetch feature ids in input label. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
void forwardBias()¶
 - 
void backwardBias(const UpdateCallback &callback)¶
 - 
void forwardOneInput(int layerId)¶
 - 
void backwardOneInput(int layerId, const UpdateCallback &callback)¶
 - 
void forwardCost()¶
 - 
void backwardCost()¶
 
- 
Validation Layers¶
ValidationLayer¶
- 
class paddle::ValidationLayer¶
- Inherits from paddle::Layer - Subclassed by paddle::AucValidation, paddle::PnpairValidation - Public Functions - 
ValidationLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
LayerPtr getOutputLayer()¶
 - 
LayerPtr getLabelLayer()¶
 - 
LayerPtr getInfoLayer()¶
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback = nullptr)¶
- Backward propagation. Should only be called after Layer::forward() function. 
 - 
virtual void validationImp(MatrixPtr outputValue, IVectorPtr label) = 0¶
 - 
virtual void onPassEnd() = 0¶
- One pass is finished. 
 
- 
AucValidation¶
- 
class paddle::AucValidation¶
- Inherits from paddle::ValidationLayer - Public Functions - 
AucValidation(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void validationImp(MatrixPtr outputValue, IVectorPtr label)¶
 - 
virtual void onPassEnd()¶
- One pass is finished. 
 - Public Members - 
std::vector<PredictionResult> predictArray_¶
 
- 
PnpairValidation¶
- 
class paddle::PnpairValidation¶
- Inherits from paddle::ValidationLayer - Public Functions - 
PnpairValidation(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void validationImp(MatrixPtr outputValue, IVectorPtr label)¶
 - 
virtual void onPassEnd()¶
- One pass is finished. 
 
- 
Check Layers¶
EosIdCheckLayer¶
- 
class paddle::EosIdCheckLayer¶
- A layer for checking EOS for each sample: - output_id = (input_id == conf.eos_id)
 - The result is stored in output_.ids. It is used by recurrent layer group. - Inherits from paddle::Layer - Public Functions - 
EosIdCheckLayer(const LayerConfig &config)¶
 - 
virtual bool init(const LayerMap &layerMap, const ParameterMap ¶meterMap)¶
- Intialization. For example, adding input layers from layerMap and parameterMap. 
 - 
virtual void forward(PassType passType)¶
- Forward propagation. All inherited implementation should call Layer::foward() function. 
 - 
virtual void backward(const UpdateCallback &callback)¶
- Backward propagation. Should only be called after Layer::forward() function.