跳转至

19.3 通用的循环神经网络模型

19.3 通用的循环神经网络模型⚓︎

以下为本小节目录,详情请参阅《智能之门》正版图书,高等教育出版社。

19.3.1 提出问题⚓︎

在19.1节和19.2节的情况不同,都是预知时间步长度,然后以纯手工方式搭建循环神经网络。表19-5展示了前两节和后面的章节要实现的循环神经网络参数。

表19-5 不同场景下的循环神经网络参数

回波检测问题 二进制减法问题 PM2.5预测问题
时间步 2 4 用户指定参数
网络输出类别 回归 二分类 多分类
分类函数 Logistic函数 Softmax函数
损失函数 均方差 二分类交叉熵 多分类交叉熵
时间步输出 最后一个 每一个 最后一个
批大小 1 1 用户指定参数
有无偏移值

如果后面再遇到多分类情况,或者其它参数有变化的话,我们不能像19.1节和19.2节那样纯手写代码,而是要抽象出来,写一个比较通用的框架。

“比较通用”是什么意思呢?那就是应该满足以下条件:

  1. 既可以支持分类网络(二分类和多分类),也可以支持回归网络;
  2. 每一个时间步可以有输出并且有监督学习信号,也可以只在最后一个时间步有输出;
  3. 第一个时间步的前向计算中不包含前一个时间步的隐层状态值(因为前面没有时间步);
  4. 最后一个时间步的反向传播中不包含下一个时间步的回传误差(因为后面没有时间步);
  5. 可以指定超参数进行网络训练,如:学习率、批大小、最大训练次数、输入层尺寸、隐层神经元数量、输出层尺寸等等;
  6. 可以保存训练结果并可以在以后加载参数,避免重新训练。

19.3.2 全输出网络通过时间反向传播⚓︎

19.3.3 单输出网络通过时间的反向传播⚓︎

19.3.4 时间步类的设计⚓︎

19.3.5 网络模型类的设计⚓︎

代码位置⚓︎

ch19, Level3_Base