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: