时间序列学习(3)——【循环神经网络中layer的使用】


本文记录学习循环神经网络layer 使用,是时间序列学习(3)

时间序列学习(1)
https://editor.csdn.net/md/?articleId=124550867

时间序列学习(2)
https://editor.csdn.net/md/?articleId=124551429


1 输入数据的维度表示

在这里插入图片描述


输入数据x: [seq, batch, feature_len]

  • seq :表示一句话有几个单词
  • batch:表示一次输入几句话
  • feature_len : 表示每个单词用feature_len 维的向量来表示

例如: [10, 3, 100]
表示10个单词一句话,一次性输入3句话,每个单词用100d的向量表示。


每个单元的 x t x_t xt 表示,[batch, feature_len], 例如 [3, 100]


所以,最开始的 h 0 h_0 h0 必须要初始化为 [batch, hidden] 才能作为 memory 往后传。
在这里插入图片描述
在这里插入图片描述

2 介绍nn.RNN

2.1 __init__函数

  • 注意,输入的x的size: [seq, batch, vec]**
  1. input_size : 就是每个词向量的维数,也就是输入x中的vec(100d)
  2. hidden_size : 特征深度
  3. num_layers : 默认是1

2.2 out, ht = forward(x, h0)

  • 注意这里的返回值是两个

x x x : [seq_len, b, word_vec]
h o 和 h t h_o 和h_t hoht :[num_layers, b, h_dim]
o u t out out : [seq_len, b, h_dim]

注意:out是一个聚合过的信息,每一个单词都会有一个输出

3 单层single layer RNN

import torch
from torch import nn

# 定义一个单层的RNN
rnn_layer = nn.RNN(input_size=100, hidden_size=20, num_layers=1)
print(rnn_layer)

x = torch.rand(10, 3, 100)

out, h = rnn_layer(x, torch.zeros(1, 3, 20))  # h0也可以不写
print(out.shape, h.shape)
  • 输出情况:
RNN(100, 20)
torch.Size([10, 3, 20]) torch.Size([1, 3, 20])

3.1 分析 输出out的shape

  • [10, 3, 20] : 表示每个句子10个单词, 一共是3个句子,然后用20d来表示每个单词

3.2 分析 输出h 的shape

  • [1, 3, 20] : 1是lay_num, 3表示是3个句子, 20表示的是每个词的特征维度。这是一层RNN的输出 h

4 多个RNN 层

  • 最后输出的h,代表的是所有RNN 输出的h
  • 最后输出的out, 是最后一个memory输出的out, 中间的状态是没有的
    在这里插入图片描述

4 简单时序预测问题

  • 比如说,正弦函数的波形的预测
    在这里插入图片描述

我会专门写一篇博文来分析这个正弦函数预测问题,包括代码+详解,对于RNN的输入输出分析!!
欢迎大家移步下方链接学习!

https://blog.csdn.net/weixin_42521185/article/details/124566528

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值