fastNLP.modules.encoder.lstm module

undocumented 轻量封装的 Pytorch LSTM 模块. 可在 forward 时传入序列的长度, 自动对padding做合适的处理.

class fastNLP.modules.encoder.lstm.LSTM(input_size, hidden_size=100, num_layers=1, dropout=0.0, batch_first=True, bidirectional=False, bias=True)[源代码]

基类:torch.nn.modules.module.Module

别名 fastNLP.modules.LSTM fastNLP.modules.encoder.LSTM

LSTM 模块, 轻量封装的Pytorch LSTM. 在提供seq_len的情况下,将自动使用pack_padded_sequence; 同时默认将forget gate的bias初始化 为1; 且可以应对DataParallel中LSTM的使用问题。

__init__(input_size, hidden_size=100, num_layers=1, dropout=0.0, batch_first=True, bidirectional=False, bias=True)[源代码]
参数
  • input_size – 输入 x 的特征维度

  • hidden_size – 隐状态 h 的特征维度. 如果bidirectional为True,则输出的维度会是hidde_size*2

  • num_layers – rnn的层数. Default: 1

  • dropout – 层间dropout概率. Default: 0

  • bidirectional – 若为 True, 使用双向的RNN. Default: False

  • batch_first – 若为 True, 输入和输出 Tensor 形状为 :(batch, seq, feature). Default: False

  • bias – 如果为 False, 模型将不会使用bias. Default: True

forward(x, seq_len=None, h0=None, c0=None)[源代码]
参数
  • x – [batch, seq_len, input_size] 输入序列

  • seq_len – [batch, ] 序列长度, 若为 None, 所有输入看做一样长. Default: None

  • h0 – [batch, hidden_size] 初始隐状态, 若为 None , 设为全0向量. Default: None

  • c0 – [batch, hidden_size] 初始Cell状态, 若为 None , 设为全0向量. Default: None

Return (output, (ht, ct))

output: [batch, seq_len, hidden_size*num_direction] 输出序列 和 ht,ct: [num_layers*num_direction, batch, hidden_size] 最后时刻隐状态.

training: bool