pytorch 中的torch.nn.LSTM函数

LSTM是RNN的一种变体
主要包括以下几个参数:
input_size:输入的input中的参数维度,即文本中的embedding_dim
hidden_size:隐藏层的维度
num_layers:LSTM的层数,一般为2-3层,默认为1
bias:是否使用偏置向,默认为True
batch_first:是否输入的input第一个为batch_size,pytorch默认False,即输入的input的三维张量是seq_len放在第一个
dropout:是否丢弃部分神经元,默认为0
bidirectional:是否使用双向LSTM ,默认False

输入:inputs,(h0,c0)
其中inputst是一个三维张量
主要包括[batch_size,seq_len,input_size]
h0是0时刻的隐层,默认为全0
c0是0时刻的cell状态,默认为全0
h0,c0的维度都为:[batch_size,num_layers*num_directions,hidden_size]

输出:outputs,(hn,cn)
output的维度[batch_size,seq_len,num_directions*hidden_size]
hn和cn是第n时刻的隐层和cell状态,维度和h0,c0相同。

下面是代码示例:

Talk is cheap.Show me the code.

input:
假设输入是[64,512,100]
LSTM = nn.LSTM(100,128,batch_first=True)
x1 = torch.randn([64,512,100)
output,(hn,cn) = LSTM(x1)

output.shape的shape[batch,seq_len,num_directions*hidden_size])
[64, 512, 128]
hn,cn的维度均为[num_layers * num_directions,batch,hidden_size]
[1,64,128]

如果是LSTM = nn.LSTM(100,128,batch_first=True,directional=True)
LSTM = nn.LSTM(100,128,batch_first=True)
x1 = torch.randn([64,512,100)
output,(hn,cn) = LSTM(x1)

那么output的维度将变成[64,512,256]
hn,cn的维度会变成[2,64,128]

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值