循环神经网络学习笔记(基础篇)

循环神经网络(RNN)基础篇学习笔记

一.权重共享

在CNN全连接层权重占比较多,在图像任务中,由于整个图像共享卷积核,所以实际参数量远远小于全连接层。
在这里插入图片描述
在实际任务中,由于全连接层参数过多,我们需要使用RNN解决带有序列模式的数据,同时利用权重共享的思想解决参数过多的问题。

二.RNN

1.序列模式的数据

比如预测天气时,今天的天气要依赖于上一天的天气数据,多用于天气、股票、自然语言处理等。
在这里插入图片描述

2.RNN Cell

h0:先验知识(可以初始化为全0与h1同维度的矩阵)
h1:hidden,与RNN Cell一同计算h2

在这里插入图片描述

RNN Cell本质就是一个线性层(Linear),hidden就是隐层,区别就是RNN Cell是共享的,反复参与运算。
RNN Cell详细运算如下:
在这里插入图片描述
伪代码实现:
在这里插入图片描述
直接使用RNN的话就不用自己实现循环:
在这里插入图片描述
Out为循环h1…hn,Hidden为最后一个隐层hn。
在这里插入图片描述

numlayer为几层的RNN(以下为numlayer详细图解):
其中numlayer=3
在这里插入图片描述
直接使用RNN伪代码:
在这里插入图片描述
其他参数说明:
在这里插入图片描述
batch_first=True:数据的序列长度和样本数量进行交换,即batch_size与seq_len参数顺序交换。
在这里插入图片描述

4.嵌入层

独热编码缺点:
(1)维度过高(每个词映射后维度变成几万维,维度诅咒)
(2)稀疏
(3)硬编码
在这里插入图片描述
我们希望得到低维,稠密,学习到的编码。
在这里插入图片描述
由此引出嵌入层,实质上就是对数据进行降维。

在这里插入图片描述
此时网络结构(Embed嵌入层)变成:
在这里插入图片描述
伪代码:
在这里插入图片描述

5.练习

(1)RNN(RnnCell练习)

在这里插入图片描述
第一步:数据处理:使用独热编码
在这里插入图片描述
第二步:任务分析:输出为四维向量,通过交叉熵变为分布,实际上是分类问题。
在这里插入图片描述
代码如下:

import torch
import sklearn.preprocessing as sp

# 1. 数据准备
input_size = 4
hidden_size = 4
batch_size = 1
idx2char = ['e','h','l','o']
x_data = [[1],[0],[2],[2],[3]]
y_data = [[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值