Pytorch中LSTM网络参数

torch.nn.LSTM()输入API

重要参数

  • input_size: 每一个时步(time_step)输入到lstm单元的维度.(实际输入的数据size为[batch_size, input_size])
  • hidden_size: 确定了隐状态hidden_state的维度. 可以简单的看成: 构造了一个权重 , 隐含状态

  • num_layers: 叠加的层数。如图所示num_layers为3

 

  •  batch_first: 输入数据的size为[batch_size, time_step, input_size]还是[time_step, batch_size, input_size]

 LSTM输出API

 

 

  • output: 如果num_layer为3,则output只记录最后一层(即,第三层)的输出

    • 对应图中向上的各个time_step的ht,也即output
    • 其size根据batch_first而不同。可能是[batch_size, time_step, hidden_size][time_step, batch_size, hidden_size]
  • h_n: 各个层的最后一个时步的隐含状态ht.

    • size为[num_layers,batch_size, hidden_size]

对应图中向右的ht. 可以看出对于单层单向的LSTM, 其h_n最后一层输出h_n[-1,:,:],和output最后一个时步的输出output[:,-1,:]相等。

print(h_n[-1,:,:].equal(output[:,-1,:]))

会打印True

  • c_n: 各个层的最后一个时步的隐含状态C

c_n可以看成另一个隐含状态,size和h_n相同

 

代码对比

根据红框可以直观看出,h_n 是最后一个时间步的输出,即是 h_n = output[:, -1, :],如何还是无法直观理解,直接看如下截图,对照代码可以非常容易看出它们的关系

 

参考文献:

  1. pytorch中LSTM笔记 - 简书
  2. PyTorch 中 LSTM 的 output、h_n 和 c_n 之间的关系_sdnuwjw的博客-CSDN博客
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值