【pytorch】nn.LSTM 模块

nn.LSTM模块参数:
Args:

  • input_size: 输入值的维度
  • hidden_size: 隐藏层的维度
  • num_layers: 堆叠多个lstm层数,默认值:1
  • bias: False则 b_ih=0 和 b_hh=0。默认值:True
  • batch_first: 输入的数据是否构成(seq_len, batch, input_size)结构。默认值:False
  • dropout: 除最后一层,每一层的输出都进行dropout,默认值: 0
  • bidirectional:True则为双向lstm,默认值:False

输入数据格式:input,(h_0,c_0)

  • input:三维张量(seq_len, batch, input_size),所以输入数据已经决定了LSTM模型中的三个变量。由于处理数据的时候输入数据维度多为(batch,seq_len, input_size),如果输入数据维度已经处理成为(seq_len, batch, input_size),则需要把batch_first置为true。
  • h_0,c_0:LSTM模型的初始输出门的输出和神经元状态,两个默认为0。

LSTM单元接受的输入值必是3维的张量(Tensors)

  1. 第一维是序列(seq_len)结构,即序列的个数,表示一个明确分割单位长度。例如句子是数据,则对应句子的长度;例如股票是数据,这表示特定时间单位内,有多少条数据。
  2. 第二维是每次输入多少个单位数据(batch),也就是一次性输入多少条句子,或者多少是个时间单位股票数据。
  3. 第三维是每个元素维度(input_size),也就是句子中的单词用多少维向量来表示,或者每个交易日股票数据使用多少个值(比如最低价,最高价,均价等)。

输出数据格式:output, (h_n, c_n)

  • output :(seq_len, batch, num_directions * hidden_size),num_directions仅在bidirectional(默认为false,使用双向RNN)为true的时候才会被置为2,否则为1
  • h_n、c_n:(num_layers * num_directions, batch, hidden_size),LSTM模型的最终输出门的输出和神经元状态

你可能感兴趣的:(深度学习,pytorch)