目录

​0 前言:​

​理论知识​

​1 RNN模型结构​

​1.1 RNN结构​

​1.2 具体图​

​1.3 计算过程​

​1.4 RNN的总括图​

​2 RNN的反向传播​

​3 Tensorflow2.0 RNN循环卷积网络​

​3.1 LSTM 网络​

​3.1.1 LSTM网络的简单实现​

​3.1.2 LSTM 网络的变体GRU​

​3.2Keras的实现​

​3.3 实现代码例子​

​4 具体实现代码​

​4.1 航空公司评论情绪预测​

​4.1.1 数据处理​

​4.1.2 训练模型​

​4.1.3 结果分析​

​4.1.4 算法改进-双向 RNN​

​4.2 北京空气污染序列预测​

​4.2.1 数据处理​

​4.2.2 训练模型前的准备​

​4.2.3 基础模型​

​4.2.4 简单的LSTM​

​4.2.5 优化LSTM模型​

​4.2.6 预测​

​参考资料​



0 前言:

关于自然语言处理,那么RNN是跑不了的,学习TF2.0的时候,学习笔记上没有对这部分知识进行详解,这部分的学习也花费了比较长的时间。

理论知识1 RNN模型结构

他们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的。但是,某些任务需要能够更好的处理序列的信息,即前面的输入和后面的输入是有关系的。

简单的了解

 ​

1.1 RNN结构

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析

1.2 具体图

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_02

1.3 计算过程

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_03

1.4 RNN的总括图

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_04

2 RNN的反向传播

 ​

具体的计算可以参考一下这一篇博文,关键之处在于,对于反向传播的时候,是如何更重新W,U,V

同时理解,是如何S是如何进行记忆的

 注意: 1. 这里的W,U,V在每个时刻都是相等的(权重共享).

             2. 隐藏状态可以理解为:  S=f(现有的输入+过去记忆总结) 

3 Tensorflow2.0 RNN循环卷积网络

3.1 LSTM 网络

Long Short Term网络般就叫做LSTM是一种RNN特殊的类型,可以学习长期依赖信息。在很多问题,LSTM 都取得相当巨大的成功,并得到了广 泛的使用, 它是RNN事实上的标准。

3.1.1 LSTM网络的简单实现

LSTM通过门]对通过的信息进行控制: i 门]是一种让信息选择式通过的方法。LSTM通过门可以让信息不通过、完全通过、通过一部份

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_05

LSTM如果理解不够,可以参考这篇博客进行逐步理解:

 ​

3.1.2 LSTM 网络的变体GRU

GRU门限循环单元。 它将忘记门和输入门合并成为一个单一的更新门, 同时合并了数据单元状态和隐藏状态, 使得模型结构比之于LSTM更为简单.

与LSTM相比,GRU结构更加简单,它有一个更新门,更新门决定了内部状态与输入state状态的融合比例(结合前面状态的多少),简单的说,GRU与LSTM网络相比,建构简单,计算少,效果相当。

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_06

3.2Keras的实现

  • Keras支持RNN各种变体:
  • layers.LSTM

注意

TF2.0的LSTM的输入是由一定格式

序列的输入格式

batch,序列长度,每一个输入的维度

举个简单的例子(后面实现的航空公司的例子)

第一维:batch

第二维度:比如航空公司的第二维评论长度

第三维度:是单词对应的向量话表示batch * 长度(特征)

3.3 实现代码例子

  • 单变量序列 -- 航空公司的评论情绪的预测
  • 多变量序列 --  (天气预报,选定一个序列,前面三天的天气去预测)天气预报
4 具体实现代码

仅仅贴部分代码作为分析

4.1 航空公司评论情绪预测

4.1.1 数据处理

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_07

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_08

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_数据_09

4.1.2 训练模型

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_10

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_数据_11

4.1.3 结果分析

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_12

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_13

存在过拟合

使用循环 dropout 抑制过拟合

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_数据_14

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_15

4.1.4 算法改进-双向 RNN

我们看到之前训练的准确度在93%,我们如果需要在进一步优化,就像双向链表一样,RNN也有双向

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_16

4.2 北京空气污染序列预测

4.2.1 数据处理

数据说明:

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_17

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_18

处理日期

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_19

由于特征cbwd是对象因此我们采用读热编码的方式

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_天气预报_20

最后我们得到我们的需要的数据

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_数据_21

4.2.2 训练模型前的准备

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_天气预报_22

标准化

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_天气预报_23

注意:

我们只需要对训练数据进行标准化,而不用对结果进行标准化

输出变成二维的输出(batch,最后的输出)

4.2.3 基础模型

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_24

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_25

4.2.4 简单的LSTM

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_26

结果得到的比较好的下降

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_27

进一步分析LSTM:

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_28

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_RNN循环神经网络_02

 

4.2.5 优化LSTM模型

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_情感分析_30

 

训练效果良好

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_31

4.2.6 预测

 

步骤:

  • 保存模型
  • 加载模型
  • 测试数据

在预测的核实后,我们需要保障预测的数据的与测试的数据行数一致(一一对应)

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_数据_32

Tensorflow2.0 入门与实战学习笔记(十四)-RNN循环卷积网络简单理解LSTM神经网络https://blog.csdn.net/shijing_0214/article/details/52081301_反向传播_33

参考资料
  • RNN的简介:
  • 一文搞懂RNN(循环神经网络)
  • RNN的变体:
  • LSTM的逐步解析:

  • RNN反向传播