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。
transformer_decoder
Decoder class