mindtext.modules.decoder.seq2seq_decoder

class mindtext.modules.decoder.seq2seq_decoder.DecoderCell (batch_size: int, hidden_size: int = 1024, num_attention_heads: int = 12, intermediate_size: int = 4096, attention_probs_dropout_prob: float = 0.02, use_one_hot_embeddings: bool = False, initializer_range: float = 0.02, hidden_dropout_prob: float = 0.1, hidden_act: str = “relu”, compute_type: mindspore.dtype = mstype.float32)

Transformer 里使用的解码器模块。

Example

>>> 

init (batch_size: int, hidden_size: int = 1024, num_attention_heads: int = 12, intermediate_size: int = 4096, attention_probs_dropout_prob: float = 0.02, use_one_hot_embeddings: bool = False, initializer_range: float = 0.02, hidden_dropout_prob: float = 0.1, hidden_act: str = “relu”, compute_type: mindspore.dtype = mstype.float32)

参数

  • batch_size (int): 输入数据集的batch size。

  • hidden_size (int): Transformer隐藏层大小,默认为1024。

  • num_attention_heads (int): 注意力头的数量,默认为12。

  • intermediate_size (int): 中间层的大小,默认为4096。

  • attention_probs_dropout_prob (float): 自注意力的dropout,默认为0.02。

  • use_one_hot_embeddings (bool): 是否使用one hot编码模式,默认为False。

  • initializer_range (float): 截断正态分布的初始值,默认为0.02。

  • hidden_dropout_prob (float): 输出的dropout,默认为0.1。

  • hidden_act (str): 激活函数,默认为relu。

  • computer_type (mindspore.dtype): 注意力计算的类型,默认为mstype.float32。

construct (hidden_states: mindspore.Tensor, attention_mask: mindspore.Tensor, enc_states: mindspore.Tensor, enc_attention_mask: mindspore.Tensor,seq_length: int, enc_seq_length: int)

参数

  • hidden_states (mindspore.Tensor):解码器的隐藏状态,shape为(batch_size, seq_len, hidden_size)。

  • attention_mask (mindspore.Tensor):自注意力隐藏状态的mask矩阵(2D或者3D),值是[0/1]或者[True/False],shape为(seq_len, seq_len)或者(batch_size, seq_len, seq_len)。

  • enc_states (mindspore.Tensor):编码器的隐藏状态,shape为(batch_size, enc_seq_len, hidden_size)。

  • enc_attention_mask (mindspore.Tensor):类似于attn_mask,但是用于enc_states。

  • seq_length (int):解码器输入的长度。

  • __ enc_seq_length__ (int):编码器输入的长度。

返回

  • output(mindspore.Tensor):解码器最后输出表示。

class mindtext.modules.decoder.seq2seq_decoder.TransformerDecoder (batch_size: int, hidden_size: int, num_hidden_layers: int, num_attention_heads: int = 16, intermediate_size: int = 4096, attention_probs_dropout_prob: float = 0.1, use_one_hot_embeddings: bool = False, initializer_range: float = 0.02, hidden_dropout_prob: float = 0.1, hidden_act: str = “relu”, compute_type: mindspore.dtype = mstype.float32)

多层transformer解码器

init (batch_size: int, hidden_size: int, num_hidden_layers: int, num_attention_heads: int = 16, intermediate_size: int = 4096, attention_probs_dropout_prob: float = 0.1, use_one_hot_embeddings: bool = False, initializer_range: float = 0.02, hidden_dropout_prob: float = 0.1, hidden_act: str = “relu”, compute_type: mindspore.dtype = mstype.float32)

参数

  • batch_size (int): 输入数据集的batch size。

  • hidden_size (int): 编码层的大小。

  • num_hidden_layers (int): 编码器的隐藏层数。

  • num_attention_heads (int): 每个编码层的注意力头数量,默认为16。

  • intermediate_size (int): 编码器中间层的大小,默认为4096。

  • attention_probs_dropout_prob (float): 自注意力的dropout,默认为0.1。

  • use_one_hot_embeddings (bool): 是否使用one hot编码模式,默认为False。

  • initializer_range (float): 截断正态分布的初始值,默认为0.02。

  • hidden_dropout_prob (float): 输出的dropout,默认为0.1。

  • hidden_act (str): 激活函数,默认为relu。

  • computer_type (mindspore.dtype): 注意力计算的类型,默认为mstype.float32。

construct (hidden_states: mindspore.Tensor, attention_mask: mindspore.Tensor, enc_states: mindspore.Tensor, enc_attention_mask: mindspore.Tensor,seq_length: int, enc_seq_length: int)

参数

  • hidden_states (mindspore.Tensor):解码器的隐藏状态,shape为(batch_size, seq_len, hidden_size)。

  • attention_mask (mindspore.Tensor):自注意力隐藏状态的mask矩阵(2D或者3D),值是[0/1]或者[True/False],shape为(seq_len, seq_len)或者(batch_size, seq_len, seq_len)。

  • enc_states (mindspore.Tensor):编码器的隐藏状态,shape为(batch_size, enc_seq_len, hidden_size)。

  • enc_attention_mask (mindspore.Tensor):类似于attn_mask,但是用于enc_states。

  • seq_length (int):解码器输入的长度。

  • __ enc_seq_length__ (int):编码器输入的长度。

返回 *output(mindspore.Tensor):TransformerDecoder最后输出表示。

class mindtext.modules.decoder.seq2seq_decoder.CreateAttentionMaskFromInputMask ()

根据输入的mask创建attention mask

init ()

construct (input_mask: mindspore.Tensor)

参数

  • input_mask (mindspore.Tensor): 输入序列的初始化mask

返回

  • attention_mask (mindspore.Tensor): 根据输入的input_mask创建的attention mask。

class mindtext.modules.decoder.seq2seq_decoder.PredLogProbs (batch_size: int, width: int, compute_type: mindspore.dtype = mstype.float32, dtype: mindspore.dtype = mstype.float32)

得到log probs

init (batch_size: int, width: int, compute_type: mindspore.dtype = mstype.float32, dtype: mindspore.dtype = mstype.float32)

参数

  • batch_size (int):batch_size。

  • width (int):隐含状态大小。

  • compute_type (mindspore.Tensor):计算类型,默认为mstype.float32。

  • dtype (mindspore.dtype):计算log_softmax的计算类型,默认为mstype.float32。

construct (input_tensor: mindspore.Tensor, output_weights: mindspore.Tensor, seq_length: int)

参数

  • input_tensor (mindspore.Tensor):执行对数概率计算的输入向量,在Transforme模型里就是解码器的输出。

  • output_weights (mindspore.Tensor):output_weights,在Transforme模型里就是embedding的查找表。

  • seq_length (int):输入向量的长度。

返回

  • output (mindspore.Tensor): 对数概率。

class mindtext.modules.decoder.seq2seq_decoder.TransformerDecoderStep (batch_size: int, hidden_size: int, max_decode_length: int, num_hidden_layers: int, num_attention_heads: int = 16, intermediate_size: int = 4096, attention_probs_dropout_prob: float = 0.3, use_one_hot_embeddings: bool = False, initializer_range: float = 0.02, hidden_dropout_prob: float = 0.3, hidden_act: str = “relu”, compute_type: mindspore.dtype = mstype.float32, embedding_lookup: Optional[EmbeddingLookup] = None, embedding_processor: Optional[EmbeddingPostprocessor] = None, projection: Optional[PredLogProbs] = None)

多层transformer解码器步骤

init (batch_size: int, hidden_size: int, max_decode_length: int, num_hidden_layers: int, num_attention_heads: int = 16, intermediate_size: int = 4096, attention_probs_dropout_prob: float = 0.3, use_one_hot_embeddings: bool = False, initializer_range: float = 0.02, hidden_dropout_prob: float = 0.3, hidden_act: str = “relu”, compute_type: mindspore.dtype = mstype.float32, embedding_lookup: Optional[EmbeddingLookup] = None, embedding_processor: Optional[EmbeddingPostprocessor] = None, projection: Optional[PredLogProbs] = None)

参数

  • batch_size (int): 输入数据集的batch size。

  • hidden_size (int): 编码层的大小。

  • max_decode_length (int): 最大解码长度。

  • num_hidden_layers (int): 编码器的隐藏层数。

  • num_attention_heads (int): 每个编码层的注意力头数量,默认为16。

  • intermediate_size (int): 编码器中间层的大小,默认为4096。

  • attention_probs_dropout_prob (float): 自注意力的dropout,默认为0.1。

  • use_one_hot_embeddings (bool): 是否使用one hot编码模式,默认为False。

  • initializer_range (float): 截断正态分布的初始值,默认为0.02。

  • hidden_dropout_prob (float): 输出的dropout,默认为0.1。

  • hidden_act (str): 激活函数,默认为relu。

  • computer_type (mindspore.dtype): 注意力计算的类型,默认为mstype.float32。

  • embedding_lookup (Optional[EmbeddingLookup]): embedding查找模块。

  • hidden_act (Optional[EmbeddingPostprocessor]): embedding后处理模块。

  • hidden_act (Optional[PredLogProbs]): 对数概率模块。

construct (input_ids: mindspore.Tensor, enc_states: mindspore.Tensor, enc_attention_mask: mindspore.Tensor,seq_length: int)

参数

  • input_ids (mindspore.Tensor):输入语句的单词在词典中的索引序号,shape为(batch_size, beam_width)。

  • enc_states (mindspore.Tensor):编码器的隐藏状态,shape为(batch_size, enc_seq_len, hidden_size)。

  • enc_attention_mask (mindspore.Tensor):自注意力隐藏状态的mask矩阵(2D或者3D),值是[0/1]或者[True/False],shape为(seq_len, seq_len)或者(batch_size, seq_len, seq_len)。

  • seq_length (int):解码器输入的长度。

返回

  • output (mindspore.Tensor): 对数概率。

class mindtext.modules.decoder.seq2seq_decoder.LengthPenalty (weight: float = 1.0, compute_type: mindspore.dtype = mstype.float32)

根据翻译的长度将分数标准化

init (weight: float = 1.0, compute_type: mindspore.dtype = mstype.float32)

参数

  • weight (float): 长度惩罚的权重,默认为1.0。

  • compute_type (mindspore.dtype): Transformer的计算类型,默认为mstype.float32。

construct (length_tensor: mindspore.Tensor)

参数

  • length_tensor (mindspore.Tensor): 隐藏状态的长度。

返回

  • output (mindspore.Tensor): 长度惩罚的结果。

class mindtext.modules.decoder.seq2seq_decoder.TileBeam (beam_width: int)

init (beam_width: int)

参数

  • beam_width (int): Beam宽度设置,默认为4。

construct (input_tensor: mindspore.Tensor)

参数

  • input_tensor (mindspore.Tensor): shape为(batch, dim1, dim2)。

返回

  • output (mindspore.Tensor): shape为(batch*beam, dim1, dim)。

class mindtext.modules.decoder.seq2seq_decoder.Mod (compute_type: mindspore.dtype = mstype.float32)

mod函数

init (compute_type: mindspore.dtype = mstype.float32)

参数

  • compute_type (mindspore.dtype): Transformer的计算类型,默认为mstype.float32。

construct (input_x: mindspore.Tensor, input_y: mindspore.Tensor)

参数

  • input_x (mindspore.Tensor): Mod函数的input_x向量。

  • input_y (mindspore.Tensor): Mod函数的input_y向量。

返回

  • x (mindspore.Tensor): Mod函数的结果。

class mindtext.modules.decoder.seq2seq_decoder.BeamSearchDecoder (batch_size: int, seq_length: int, vocab_size: int, decoder: TransformerDecoderStep, beam_width: int = 4, length_penalty_weight: float = 1.0, max_decode_length: int = 128, sos_id: int = 1, eos_id: int = 2, compute_type: mindspore.dtype = mstype.float32)

Beam search 解码器

init (batch_size: int, seq_length: int, vocab_size: int, decoder: TransformerDecoderStep, beam_width: int = 4, length_penalty_weight: float = 1.0, max_decode_length: int = 128, sos_id: int = 1, eos_id: int = 2, compute_type: mindspore.dtype = mstype.float32)

参数

  • batch_size (int): 数据集的batch size。

  • seq_length (int): 序列的长度。

  • vocab_size (int): 字典的大小。

  • decoder (TransformerDecoderStep): 解码模块。

  • beam_width (int): beam宽度设置,默认为4。

  • length_penalty_weight (int): 长度惩罚权重,默认为1.0。

  • max_decode_length (int): 最大解码长度,默认为128。

  • sos_id (int): 序列开始token的ID,默认为1。

  • eos_id (int): 序列结束token的ID,默认为2。

  • compute_type (mindspore.dtype): Transformer的计算类型,默认为mstype.float32。

one_setp (cur_input_ids: mindspore.Tensor, enc_states: mindspore.Tensor, enc_attention_mask: mindspore.Tensor, state_log_probs: mindspore.Tensor, state_seq: mindspore.Tensor, state_finished: mindspore.Tensor, state_length: mindspore.Tensor)

解码器的一步

参数

  • cur_input_ids (mindspore.Tensor):输入语句的单词在词典中的索引序号。

  • enc_states (mindspore.Tensor):编码器的隐藏状态,shape为(batch_size, enc_seq_len, hidden_size)。

  • enc_attention_mask (mindspore.Tensor):自注意力隐藏状态的mask矩阵(2D或者3D),值是[0/1]或者[True/False],shape为(seq_len, seq_len)或者(batch_size, seq_len, seq_len)。

  • state_log_probs (int):序列隐含状态的对数概率。

  • state_seq (mindspore.Tensor):序列隐含状态。

  • state_finished (mindspore.Tensor):序列隐含状态的结束flag。

  • state_length (int):序列隐含状态的长度。

返回

  • cur_input_ids (mindspore.Tensor): one_step的结果。

  • state_log_probs (mindspore.Tensor): one_step的结果。

  • state_seq (mindspore.Tensor): one_step的结果。

  • state_finished (mindspore.Tensor): one_step的结果。

  • state_length (mindspore.Tensor): one_step的结果。

construct (enc_states: mindspore.Tensor, enc_attention_mask: mindspore.Tensor)

参数

  • enc_states (mindspore.Tensor): 编码器的隐藏状态,shape为(batch_size, enc_seq_len, hidden_size)。

  • enc_attention_mask (mindspore.Tensor): 自注意力隐藏状态的mask矩阵(2D或者3D),值是[0/1]或者[True/False],shape为(seq_len, seq_len)或者(batch_size, seq_len, seq_len)。

返回

  • predicted_ids (mindspore.Tensor): 预测的索引号。