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

该博客参考PyTorch官方文档,介绍了LSTM的关键参数,如input_size、hidden_size等,还说明了输入输出格式。输入格式为lstm(input,(h_0, c_0)),输出格式为(output,(h_n,c_n)),并给出了各参数的具体含义及默认值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

先上原图图1 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 默认为否

图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值

图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))
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值