pytorch学习笔记-循环神经网络

1、循环神经网络的简单结构

对于每一条输入数据有几个描述量:

  数据的长度(sequence length)- 即数据的时间步的数目,一个时间步可以通俗理解成一个单词

  数据尺寸(input/output size)-每个时间步的元素包含的特征个数,比如一个单词用one-hot向量  表示的话,input size就是这个向量的长度

循环神经网络中的每一个时间步的网络参数都是一样的

2、关于pytorch中循环神经网络模块的调用

torch.nn.lstm(input_size,hidden_size,num_layers=1,bias=True,batch_first=False,dropout=False,bidirectional=False)

举例:lstm模型的使用

inputsize=28

hiddensize=128

model = torch.nn.lstm(inputsize,hiddensize,num_layers=1,batch_first=True)

output,(ht,ct) = model(x,(h0,c0))

关于x,h0,c0的输入形式说明

  x:shape是(sequence_length,input_size)或(sequence_length, batch_size,input_size)或者(batch_size,sequence_length,input_szie)的张量,上述三种形式分别对应的情况是:x是一条单一数据;x是一批数据,且lstm中batch_first值为False;x是一批数据,且lstm中batch_first值为True

h0:shape是(D*num_layers,hidden_size/proj_size), 对于单向循环神经网络,D等于1,对于双向循环神经网络,D=2,理解为网络的每一层,每个方向都有一个独立的hidden_size大小的向量输入;如果是批量数据的话,则h0的shape是(D*num_layers,batch_size,hidden_size/proj_size)

c0:shape是(D*num_layers,batch_size, hidden_size)或者(D*num_layers)

关于模型的输出output,ht,ct的数据形式说明

   output:shape是(sequence_length,D*out_size)或者(sequence_length, batch_size, D*out_size)或者(batch_size, sequence_length, D*out_size)

  ht:shape是(D*num_layers, out_size)或者(D*numlayers, batch_size, out_szie)

  ct:shape是(D*num_layers, hidden_size)或者(D*numlayers, batch_size, hidden_size)

3、nn.lstm的计算图

注:公式中的⚪中心加点的符号是阿达玛乘积运算,即对于两个矩阵的阿达玛乘积是将矩阵对应元素做乘积

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值