提交 dd711c37 编写于 作者: D dzhwinter

"add beam search"

上级 dbe0fe6d
...@@ -834,11 +834,14 @@ def linear_chain_crf(input, label, param_attr=None): ...@@ -834,11 +834,14 @@ def linear_chain_crf(input, label, param_attr=None):
Args: Args:
input(${emission_type}): ${emission_comment} input(${emission_type}): ${emission_comment}
input(${transition_type}): ${transition_comment}
label(${label_type}): ${label_comment} label(${label_type}): ${label_comment}
param_attr(ParamAttr): The attribute of the learnable parameter. param_attr(ParamAttr): The attribute of the learnable parameter.
Returns: Returns:
${log_likelihood_comment} ${log_likelihood_comment}
${transitionexps_comment}
${emissionexps_comment}
""" """
helper = LayerHelper('linear_chain_crf', **locals()) helper = LayerHelper('linear_chain_crf', **locals())
...@@ -1170,10 +1173,6 @@ def sequence_conv(input, ...@@ -1170,10 +1173,6 @@ def sequence_conv(input,
Variable: output of sequence_conv Variable: output of sequence_conv
""" """
# FIXME(dzh) : want to unify the argument of python layer
# function. So we ignore some unecessary attributes.
# such as, padding_trainable, context_start.
helper = LayerHelper('sequence_conv', **locals()) helper = LayerHelper('sequence_conv', **locals())
dtype = helper.input_dtype() dtype = helper.input_dtype()
filter_shape = [filter_size * input.shape[1], num_filters] filter_shape = [filter_size * input.shape[1], num_filters]
...@@ -2051,18 +2050,31 @@ def layer_norm(input, ...@@ -2051,18 +2050,31 @@ def layer_norm(input,
def beam_search_decode(ids, scores, name=None): def beam_search_decode(ids, scores, name=None):
""" """
Beam Search Decode
This layers is to pack the output of beam search layer into sentences and This layers is to pack the output of beam search layer into sentences and
associated scores. It is usually called after the beam search layer. associated scores. It is usually called after the beam search layer.
Typically, the output of beam search layer is a tensor of selected ids, with
a tensor of the score of each id. Beam search layer's output ids, however,
are generated directly during the tree search, and they are stacked by each
level of the search tree. Thus we need to reorganize them into sentences,
based on the score of each id. This layer takes the output of beam search
layer as input and repack them into sentences.
${beam_search_decode} ${beam_search_decode}
Args: Args:
ids (Variable): ${ids_comment} ids (Variable): The selected ids, output of beam search layer.
scores (Variable): ${scores_comment} scores (Variable): The associated scores of the ids, out put of beam
search layer.
name (str): The name of this layer. It is optional. name (str): The name of this layer. It is optional.
Returns: Returns:
tuple(Variable): a tuple of two output variable: sentence_ids, sentence_scores tuple(Variable): a tuple of two output tensors: sentence_ids, sentence_scores.
sentence_ids is a tensor with shape [size, length], where size is the
beam size of beam search, and length is the length of each sentence.
Note that the length of sentences may vary.
sentence_scores is a tensor with the same shape as sentence_ids.
Examples: Examples:
.. code-block:: python .. code-block:: python
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册