Decoder

rnn_decoder

RNN解码器模块

class mindnlp.modules.decoder.rnn_decoder.RNNDecoder(embedding, rnns, dropout_in=0, dropout_out=0, attention=True, encoder_output_units=512, mode='RNN')[源代码]

基类:DecoderBase

循环神经网络(RNN)解码器

参数
  • embedding (Cell) – 嵌入层

  • rnns (list) – 循环神经网络单元的列表

  • dropout_in (Union[float, int]) – 如果值不为0,则对每一个rnn层的输入进行`Dropout`操作,值为神经元丢弃概率。默认值:0,范围为[0.0, 1.0)。

  • dropout_out (Union[float, int]) – 如果值不为0,则对每一个rnn层的输出进行`Dropout`操作,值为神经元丢弃概率。默认值:0,范围为[0.0, 1.0)。

  • attention (bool) – 指定是否使用attention。默认值:True。

  • encoder_output_units (int) – 编码器输出特征的数目。默认值:512.

示例

>>> vocab_size = 1000
>>> embedding_size = 32
>>> hidden_size = 16
>>> num_layers = 2
>>> dropout_in = 0.1
>>> dropout_out = 0.1
>>> encoder_output_units = 16
>>> embedding = nn.Embedding(vocab_size, embedding_size)
>>> input_feed_size = 0 if encoder_output_units == 0 else hidden_size
>>> rnns = [
...     nn.RNNCell(
...         input_size=embedding_size + input_feed_size
...         if layer == 0
...             else hidden_size,
...         hidden_size=hidden_size
...         )
...         for layer in range(num_layers)
... ]
>>> rnn_decoder = RNNDecoder(embedding, rnns, dropout_in=dropout_in, dropout_out=dropout_out,
...                          attention=True, encoder_output_units=encoder_output_units, mode="RNN")
>>> tgt_tokens = Tensor(np.ones([8, 16]), mindspore.int32)
>>> encoder_output = Tensor(np.ones([8, 16, 16]), mindspore.float32)
>>> hiddens_n = Tensor(np.ones([2, 8, 16]), mindspore.float32)
>>> mask = Tensor(np.ones([8, 16]), mindspore.int32)
>>> output, attn_scores = rnn_decoder(tgt_tokens, (encoder_output, hiddens_n, mask))
>>> print(output.shape)
>>> print(attn_scores.shape)
(8, 16, 1000)
(8, 16, 16)
construct(prev_output_tokens, encoder_out=None)[源代码]

Cell的construct方法

参数
  • prev_output_tokens (Tensor) – 用于teacher-forcing模式的token,shape为[batch, tgt_len]。

  • encoder_out (Tensor) – 编码器的输出。默认值:None。

返回

Tuple类型,返回一个包含(output, attn_scores)的tuple。 - output (Tensor): shape为(batch, tgt_len, vocab_size)的Tensor。 - attn_scores (Tensor): 如果attention=True,则是shape为(batch, tgt_len, src_len)的Tensor;否则为None。

extract_features(prev_output_tokens, encoder_out=None)[源代码]

提取编码器输出的特征

参数
  • prev_output_tokens (Tensor) – 用于teacher-forcing模式的token,shape为[batch, tgt_len]。

  • encoder_out (Tensor) – 编码器的输出。默认值:None。

返回

Tuple类型,返回一个包含(output, attn_scores)的tuple。 - output (Tensor): shape为(batch, tgt_len, hidden_size)的Tensor。 - attn_scores (Tensor): 如果attention=True,则是shape为(batch, tgt_len, src_len)的Tensor;否则为None。

output_layer(features)[源代码]

将特征映射到词汇中元素的个数

参数

features (Tensor) – 提取的特征Tensor

返回

Tensor类型,返回解码器的结果。

transformer_decoder

Decoder class