torch.nn.LSTM

什么是 LSTM

Understanding LSTM Networks人人都能看懂的LSTM 这两篇文章介绍了 LSTM 的原理。本文的着重点在于 LSTM 的输入输出维度以及 torch.nn.LSTM 的使用。

LSTM 的输入输出

首先来看这张图
在这里插入图片描述

input 序列的长度为 L L L ,包括 x 1 , x 2 , . . . , x n − 1 , x n ( n = L ) x_1, x_2, ..., x_{n-1}, x_n(n=L) x1,x2,...,xn1,xn(n=L) ,每个输入 x n x_n xn 的维度数 input_size 为 H i n H_{in} Hin 。所以,输入为 L × H i n L \times H_{in} L×Hin 的矩阵。
每个隐藏单元 h n ( w ) h_n^{(w)} hn(w) (每个蓝框)的尺寸 hidden_size 为 H c e l l H_{cell} Hcell ,而每个输入 x n x_n xn 顶上的蓝框数量称作 num_layers ,即层数 D D D 。最后一层的隐藏单元即为输出,大小为 L × H c e l l L \times H_{cell} L×Hcell

nn.LSTM

下面为 Pytorch 官方例子

rnn = nn.LSTM(10, 20, 2)				# 构建模型,(input_size, hidden_size, num_layers)->(H_in, H_cell, D)
input = torch.randn(5, 3, 10)		# 生成数据,(L, batch_size, H_in)
h0 = torch.randn(2, 3, 20)			# 初始隐藏单元,(num_layers, batch_size, hidden_size)->(D, batch_size, H_cell)
c0 = torch.randn(2, 3, 20)				# 一般用不到
output, (hn, cn) = rnn(input, (h0, c0))
# output.shape = (5, 3, 20)->(L, batch_size, H_cell)
#hn.shape = h0.shape
# cn.shape = c0.shape
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值