torch.nn.LSTM详解

本文详细解释了torch.nn.LSTM模块中的num_layers参数和bidirectional参数。通过实例展示了它们如何影响LSTM的输出和隐藏状态,并探讨了多层及双向LSTM的工作原理。
摘要由CSDN通过智能技术生成

本文主要介绍torch.nn.LSTM的num_layers参数以及bidirectional这两个参数的用法,因为在维度上比较绕,所以只看源码也许不太懂,本文用理解加验证的方式去学习如何用这两个参数

咱们统一batch_first=False,也就是默认的情况

设定一个batch,句子长度是50,batch_size=3,embedding_size=10,

设定一个LSTM,input_size=10,hidden_size=20

最简单的情况:

num_layers=1,bidirectional=False,我们知道nn.lstm会返回两个值一个是outputs,另外是一个tuple(h,c), h是hidden state,c是cell state

1.outputs=(word_len,batch_size,hidden_size)

def shp(_):
    print(_.shape)


lstm=nn.LSTM(10,20,1,bidirectional=False)
batch1=torch.randn(50,3,10)
outputs,(h,c)=lstm(batch1)
shp(outputs) # word_len*batch_size*hidden_size
shp(h)
shp(c)

输出

torch.Size([50, 3, 20])
torch.Size([1, 3, 20])
torch.Size([1, 3, 20])

且最后一个word的output与hidden一样,取第一个句子验证一下

print(outputs[-1][0])
print(h[0][0])

输出

  • 9
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值