总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)

参考pytorch官方文档
https://pytorch.org/docs/master/nn.html#torch.nn.LSTM

先上原图总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)_第1张图片

| 总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)_第2张图片
这里是关键参数介绍
input_size:输入特征的数目
hidden_size:隐层的特征数目
num_layers:这个是模型集成的LSTM的个数 记住这里是模型中有多少个LSTM摞起来 一般默认就1个
bias:用不用偏置 默认是用
batch_first:默认为假 若为真,则输入、输出的tensor的格式为(batch , seq , feature)
即[batch_size, time_step, input_size] 【batch大小,序列长度,特征数目】
dropout:默认0 若非0,则为dropout率
bidirectional:是否为双向LSTM 默认为否

总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)_第3张图片
下面仅考虑单项情况
输入格式为lstm(input,(h_0, c_0))
这里面,input为(seq_len, batch, input_size)这里默认batch_first为false,否则前两个换顺序
h_0是格式为(num_layers * num_directions, batch, hidden_size)的tensor 它包含batch中每个元素的最初的隐态
若为双向lstm num_dire…=2 否则=1
c_0是格式为(seq_len, batch, input_size)的tensor 它包含batch中每个元素最初的cell state
若h_0和c_0不提供,则默认为0


输出格式为(output,(h_n,c_n))
output是形状为(seq_len, batch, num_directions*hidden_size)的tensor,包含输出特征h_t(源于LSTM每个t的最后一层)
h_n是形状为(num_layers * num_directions, batch, hidden_size)的tensor, 包含t=seq_len(即序列末尾)的隐态值
c_n是形状为(num_layers * num_directions, batch, hidden_size)的tensor, 包含t=seq_len(即序列末尾)的cell值

总结PYTORCH中nn.lstm(自官方文档整理 包括参数、实例)_第4张图片
直接看示例

rnn = nn.LSTM(10,20,2)#输入向量维数10, 隐藏元维度20, 2个LSTM层串联(若不写则默认为1)
input = torch.randn(5,3,10)#输入(seq_len, batch, input_size) 序列长度为5 batch为3 输入维度为10
h0 = torch.randn(2,3,20)#h_0(num_layers * num_directions, batch, hidden_size)  num_layers = 2 ,batch=3 ,hidden_size = 20
c0 = torch.randn(2,3,20)#同上
output, (hn,cn) = rnn(input, (h0,c0))

你可能感兴趣的:(NLP,python,人工智能,RNN,pytorch,LSTM)