19.2 四个时间步的循环神经网络
19.2 四个时间步的循环神经网络⚓︎
以下为本小节目录,详情请参阅《智能之门》正版图书,高等教育出版社。
19.2.1 提出问题⚓︎
在加减法运算中,总会遇到进位或者退位的问题,我们以二进制为例,比如13-6=7这个十进制的减法,变成二进制后如下所示:
13 - 6 = 7
====================
x1: [1, 1, 0, 1]
- x2: [0, 1, 1, 0]
------------------
y: [0, 1, 1, 1]
====================
- 被减数13变成了[1, 1, 0, 1]
- 减数6变成了[0, 1, 1, 0]
- 结果7变成了[0, 1, 1, 1]
在减法过程中:
- x1和x2的最后一位是1和0,相减为1
- 倒数第二位是0和1,需要从前面借一位,相减后得1
- 倒数第三位本来是1和1,借位后变成了0和1,再从前面借一位,相减后得1
- 倒数第四位本来是1和0,借位后是0和0,相减为0
也就是说,在减法过程中,后面的计算会影响前面的值,所以必须逐位计算,这也就是时间步的概念,所以应该可以用循环神经网络的技术来解决。
19.2.2 准备数据⚓︎
19.2.3 搭建多个时序的网络⚓︎
19.2.4 正向计算⚓︎
19.2.5 反向传播⚓︎
19.2.6 梯度更新⚓︎
19.2.7 代码实现⚓︎
19.2.8 运行结果⚓︎
代码位置⚓︎
ch19, Level2
思考和练习⚓︎
- 把tanh函数变成sigmoid函数,试试看有什么不同?
- 给h和z节点增加偏移值,看看有什么不同?
- 把h节点的神经元数量增加到8个或16个,看看训练过程有何不同?减少到2个神经元会得到正确结果吗?
- 把二进制数扩展为8位,即最大值255时,这个网络还能正确工作吗?