Seq2Seq的建模解释和Keras中Simple RNN Cell的计算及其代码示例
RNN的应用有很多,尤其是两个RNN组成的Seq2Seq结构,在时序预测、自然语言处理等方面有很大的用处,而每个RNN中一个节点是一个Cell,它是RNN中的基本结构。本文从如何使用RNN建模数据开始,重点解释RNN中Cell的结构,以及Keras中Cell相关的输入输出及其维度。我已经尽量解释了每个变量,但可能也有忽略,因此可能对RNN之前有一定了解的人会更友好,本文最主要的目的是描述Keras中RNNcell的参数以及输入输出的两个注意点。如有问题也欢迎指出,我会进行修改。
本文相关的Github Project地址:Github:deep_learning_with_python
代码均已上传。
关于RNN模型的更加理论的解释,可以参考之前的文章:深度学习之RNN模型
- 一、基于Seq2Seq来预测时序数据
- 二、RNN中的Cell如何对数据建模
- 三、Simple RNN Cell的建模理论数学说明
- 四、Keras中SimpleRNNCell的输入输出和参数
- 我们先定义一个cell,units=1,也就是隐状态的维度是1
- 我们随机生成一个当前阶段的特征和前一阶段的状态
- 注意,这里state的维度是[1, 2, 1],因为Keras取前一阶段的状态会根据不同的Cell取不同的数量,如果是SimpleRNNCell,那么取第一个,如果是GRU,那么接着取,所以这里的第一个维度实际是第几种state,由于我们这里测试的是SimpleRNNCell,只有一个状态,那么用这个维度即可

