Networks¶
The networks module contains pieces of neural network that combine multiple layers.
The pieces are:
- NLP
- Text Convolution component
 
 - Images
- Conv_Pool
 - Conv_BatchNorm_Pool
 
 - Recurrent
- simple_lstm
 
 - Miscs
- dropout_layer
 
 
- 
paddle.trainer_config_helpers.networks.sequence_conv_pool(*args, **kwargs)¶ Text convolution pooling layers helper.
Text input => Context Projection => FC Layer => Pooling => Output.
Parameters: - name (basestring) – name of output layer(pooling layer name)
 - input (LayerOutput) – name of input layer
 - context_len (int) – context projection length. See context_projection’s document.
 - hidden_size (int) – FC Layer size.
 - context_start (int or None) – context projection length. See context_projection’s context_start.
 - pool_type (BasePoolingType.) – pooling layer type. See pooling_layer’s document.
 - context_proj_layer_name (basestring) – context projection layer name. None if user don’t care.
 - context_proj_param_attr (ParameterAttribute or None.) – context projection parameter attribute. None if user don’t care.
 - fc_layer_name (basestring) – fc layer name. None if user don’t care.
 - fc_param_attr (ParameterAttribute or None) – fc layer parameter attribute. None if user don’t care.
 - fc_bias_attr (ParameterAttribute or None) – fc bias parameter attribute. False if no bias, None if user don’t care.
 - fc_act (BaseActivation) – fc layer activation type. None means tanh
 - pool_bias_attr (ParameterAttribute or None.) – pooling layer bias attr. None if don’t care. False if no bias.
 - fc_attr (ExtraLayerAttribute) – fc layer extra attribute.
 - context_attr (ExtraLayerAttribute) – context projection layer extra attribute.
 - pool_attr (ExtraLayerAttribute) – pooling layer extra attribute.
 
Returns: output layer name.
Return type: LayerOutput
- 
paddle.trainer_config_helpers.networks.text_conv_pool(*args, **kwargs)¶ Text convolution pooling layers helper.
Text input => Context Projection => FC Layer => Pooling => Output.
Parameters: - name (basestring) – name of output layer(pooling layer name)
 - input (LayerOutput) – name of input layer
 - context_len (int) – context projection length. See context_projection’s document.
 - hidden_size (int) – FC Layer size.
 - context_start (int or None) – context projection length. See context_projection’s context_start.
 - pool_type (BasePoolingType.) – pooling layer type. See pooling_layer’s document.
 - context_proj_layer_name (basestring) – context projection layer name. None if user don’t care.
 - context_proj_param_attr (ParameterAttribute or None.) – context projection parameter attribute. None if user don’t care.
 - fc_layer_name (basestring) – fc layer name. None if user don’t care.
 - fc_param_attr (ParameterAttribute or None) – fc layer parameter attribute. None if user don’t care.
 - fc_bias_attr (ParameterAttribute or None) – fc bias parameter attribute. False if no bias, None if user don’t care.
 - fc_act (BaseActivation) – fc layer activation type. None means tanh
 - pool_bias_attr (ParameterAttribute or None.) – pooling layer bias attr. None if don’t care. False if no bias.
 - fc_attr (ExtraLayerAttribute) – fc layer extra attribute.
 - context_attr (ExtraLayerAttribute) – context projection layer extra attribute.
 - pool_attr (ExtraLayerAttribute) – pooling layer extra attribute.
 
Returns: output layer name.
Return type: LayerOutput
- 
paddle.trainer_config_helpers.networks.simple_img_conv_pool(*args, **kwargs)¶ Simple image convolution and pooling group.
Input => conv => pooling
Parameters: - name (basestring) – group name
 - input (LayerOutput) – input layer name.
 - filter_size (int) – see img_conv_layer for details
 - num_filters (int) – see img_conv_layer for details
 - pool_size (int) – see img_pool_layer for details
 - pool_type (BasePoolingType) – see img_pool_layer for details
 - act (BaseActivation) – see img_conv_layer for details
 - groups (int) – see img_conv_layer for details
 - conv_stride (int) – see img_conv_layer for details
 - conv_padding (int) – see img_conv_layer for details
 - bias_attr (ParameterAttribute) – see img_conv_layer for details
 - num_channel (int) – see img_conv_layer for details
 - param_attr (ParameterAttribute) – see img_conv_layer for details
 - shared_bias (bool) – see img_conv_layer for details
 - conv_layer_attr (ExtraLayerAttribute) – see img_conv_layer for details
 - pool_stride (int) – see img_conv_layer for details
 - pool_start (int) – see img_conv_layer for details
 - pool_padding (int) – see img_conv_layer for details
 - pool_layer_attr (ExtraLayerAttribute) – see img_conv_layer for details
 
Returns: Layer’s output
Return type: LayerOutput
- 
paddle.trainer_config_helpers.networks.img_conv_bn_pool(*args, **kwargs)¶ Convolution, batch normalization, pooling group.
Parameters: - name (basestring) – group name
 - input (LayerOutput) – layer’s input
 - filter_size (int) – see img_conv_layer’s document
 - num_filters (int) – see img_conv_layer’s document
 - pool_size (int) – see img_pool_layer’s document.
 - pool_type (BasePoolingType) – see img_pool_layer’s document.
 - act (BaseActivation) – see batch_norm_layer’s document.
 - groups (int) – see img_conv_layer’s document
 - conv_stride (int) – see img_conv_layer’s document.
 - conv_padding (int) – see img_conv_layer’s document.
 - conv_bias_attr (ParameterAttribute) – see img_conv_layer’s document.
 - num_channel (int) – see img_conv_layer’s document.
 - conv_param_attr (ParameterAttribute) – see img_conv_layer’s document.
 - shared_bias (bool) – see img_conv_layer’s document.
 - conv_layer_attr (ExtraLayerOutput) – see img_conv_layer’s document.
 - bn_param_attr (ParameterAttribute.) – see batch_norm_layer’s document.
 - bn_bias_attr – see batch_norm_layer’s document.
 - bn_layer_attr – ParameterAttribute.
 - pool_stride (int) – see img_pool_layer’s document.
 - pool_start (int) – see img_pool_layer’s document.
 - pool_padding (int) – see img_pool_layer’s document.
 - pool_layer_attr (ExtraLayerAttribute) – see img_pool_layer’s document.
 
Returns: Layer groups output
Return type: LayerOutput
- 
paddle.trainer_config_helpers.networks.img_conv_group(*args, **kwargs)¶ Image Convolution Group, Used for vgg net.
TODO(yuyang18): Complete docs
Parameters: - conv_batchnorm_drop_rate –
 - input –
 - conv_num_filter –
 - pool_size –
 - num_channels –
 - conv_padding –
 - conv_filter_size –
 - conv_act –
 - conv_with_batchnorm –
 - pool_stride –
 - pool_type –
 
Returns: 
- 
paddle.trainer_config_helpers.networks.vgg_16_network(input_image, num_channels, num_classes=1000)¶ Same model from https://gist.github.com/ksimonyan/211839e770f7b538e2d8
Parameters: - num_classes –
 - input_image (LayerOutput) –
 - num_channels (int) –
 
Returns: 
- 
paddle.trainer_config_helpers.networks.simple_lstm(*args, **kwargs)¶ Simple LSTM Cell.
It just combine a mix_layer with fully_matrix_projection and a lstmemory layer. The simple lstm cell was implemented as follow equations.
\[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)\]\[c_t = f_tc_{t-1} + i_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)\]\[h_t = o_t tanh(c_t)\]Please refer Generating Sequences With Recurrent Neural Networks if you want to know what lstm is. Link is here.
Parameters: - name (basestring) – lstm layer name.
 - input (LayerOutput) – input layer name.
 - size (int) – lstm layer size.
 - reverse (bool) – is lstm reversed
 - mat_param_attr (ParameterAttribute) – mixed layer’s matrix projection parameter attribute.
 - bias_param_attr (ParameterAttribute|False) – bias parameter attribute. False means no bias, None means default bias.
 - inner_param_attr (ParameterAttribute) – lstm cell parameter attribute.
 - act (BaseActivation) – lstm final activate type
 - gate_act (BaseActivation) – lstm gate activate type
 - state_act (BaseActivation) – lstm state activate type.
 - mixed_layer_attr (ExtraLayerAttribute) – mixed layer’s extra attribute.
 - lstm_cell_attr (ExtraLayerAttribute) – lstm layer’s extra attribute.
 
Returns: lstm layer name.
Return type: LayerOutput
- 
paddle.trainer_config_helpers.networks.lstmemory_unit(*args, **kwargs)¶ TODO(yuyang18): complete docs
@param input: @param name: @param size: @param mixed_bias_attr: @param mixed_layer_attr: @param param_attr: @param lstm_bias_attr: @param act: @param gate_act: @param state_act: @param lstm_layer_attr: @param get_output_layer_attr: @return:
- 
paddle.trainer_config_helpers.networks.lstmemory_group(*args, **kwargs)¶ TODO(yuyang18): complete docs
@param input: @param size: @param name: @param reverse: @param param_attr: @param mix_bias_attr: @param lstm_bias_attr: @param act: @param gate_act: @param state_act: @param mixed_layer_attr: @param lstm_layer_attr: @param get_output_layer_attr: @return:
- 
paddle.trainer_config_helpers.networks.gru_unit(*args, **kwargs)¶ Parameters: - input (LayerOutput) –
 - name –
 - size –
 - gru_bias_attr –
 - act –
 - gate_act –
 - gru_layer_attr –
 
Returns: 
- 
paddle.trainer_config_helpers.networks.bidirectional_lstm(*args, **kwargs)¶ TODO(yuyang18): Complete docs
Parameters: - name (basestring) – bidirectional lstm layer name.
 - input (LayerOutput) – input layer.
 - size (int) – lstm layer size.
 - return_seq (bool) – If False, concat word in last time step and return. If True, concat sequnce in all time step and return.
 
Returns: lstm layer name.
Return type: LayerOutput
- 
paddle.trainer_config_helpers.networks.simple_attention(*args, **kwargs)¶ Calculate and then return a context vector by attention machanism. Size of the context vector equals to size of encoded_sequence.
\[a(s_{i-1},h_{j}) = v_{a}f(W_{a}s_{t-1} + U_{a}h_{j})\]\[e_{i,j} = a(s_{i-1}, h_{j})\]\[a_{i,j} = \frac{exp(e_{i,i})}{\sum_{k=1}^{T_{x}{exp(e_{i,k})}}}\]\[c_{i} = \sum_{j=1}^{T_{x}}a_{i,j}h_{j}\]where \(h_{j}\) is the jth element of encoded_sequence, \(U_{a}h_{j}\) is the jth element of encoded_proj \(s_{i-1}\) is decoder_state \(f\) is weight_act, and is set to tanh by default.
Please refer to Neural Machine Translation by Jointly Learning to Align and Translate for more details. The link is as follows: https://arxiv.org/abs/1409.0473.
The example usage is: .. code-block:: python
- context = simple_attention(encoded_sequence=enc_seq,
 - encoded_proj=enc_proj, decoder_state=decoder_prev,)
 
Parameters: - name (basestring) – name of the attention model.
 - softmax_param_attr (ParameterAttribute) – parameter attribute of sequence softmax that is used to produce attention weight
 - weight_act (Activation) – activation of the attention model
 - encoded_sequence (LayerOutput) – output of the encoder
 - encoded_proj (LayerOutput) – attention weight is computed by a feed forward neural network which has two inputs : decoder’s hidden state of previous time step and encoder’s output. encoded_proj is output of the feed-forward network for encoder’s output. Here we pre-compute it outside simple_attention for speed consideration.
 - decoder_state (LayerOutput) – hidden state of decoder in previous time step
 - transform_param_attr (ParameterAttribute) – parameter attribute of the feed-forward network that takes decoder_state as inputs to compute attention weight.
 
Returns: a context vector
- 
paddle.trainer_config_helpers.networks.dropout_layer(*args, **kwargs)¶ @TODO(yuyang18): Add comments.
Parameters: - name –
 - input –
 - dropout_rate –
 
Returns: 
- 
paddle.trainer_config_helpers.networks.outputs(layers)¶ Declare the end of network. Currently it will only calculate the input/output order of network. It will calculate the predict network or train network’s output automatically.
Parameters: layers (list|tuple|LayerOutput) – Returns: