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节那样纯手写代码,而是要抽象出来,写一个比较通用的框架。
“比较通用”是什么意思呢?那就是应该满足以下条件:
- 既可以支持分类网络(二分类和多分类),也可以支持回归网络;
- 每一个时间步可以有输出并且有监督学习信号,也可以只在最后一个时间步有输出;
- 第一个时间步的前向计算中不包含前一个时间步的隐层状态值(因为前面没有时间步);
- 最后一个时间步的反向传播中不包含下一个时间步的回传误差(因为后面没有时间步);
- 可以指定超参数进行网络训练,如:学习率、批大小、最大训练次数、输入层尺寸、隐层神经元数量、输出层尺寸等等;
- 可以保存训练结果并可以在以后加载参数,避免重新训练。
19.3.2 全输出网络通过时间反向传播⚓︎
19.3.3 单输出网络通过时间的反向传播⚓︎
19.3.4 时间步类的设计⚓︎
19.3.5 网络模型类的设计⚓︎
代码位置⚓︎
ch19, Level3_Base