何时用 RNN 何时用前馈网络呢?
前馈神经网络,它会输出一个数据,可以用来做分类或者回归。
RNN 适合时间序列的数据,它的输出可以是一个序列值或者一序列的值。(自然语言)
所以说,如果要做分类或者回归的话,可以用前馈是神经网络,如果要预测的话,可以用循环神经网络。
RNN采样
随机采样:
num_steps为每个样本所包含的时间步数,即一个样本里的数量
batch_size为小批量的样本数
随机取任何一个批量
如果1,2,3,4,5,6,7,8,9,10,11,12
num_step=3, batch_size=2
7,8,9
4,5,6
相邻采样:
令相邻的两个随机小批量在原始序列上的位置相毗邻
我们就可以用一个小批量最终时间步的隐藏状态来初始化下一个小批量的隐藏状态,从而使下一个小批量的输出也取决于当前小批量的输入,并如此循环下去。
One-hot
nd.one_hot(nd.array([1, 2,19]), 20)
[[0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]
梯度裁剪
由于链式法则的原因,可能导致梯度会爆炸,所以要裁剪梯度。