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): 预测的索引号。