Python实现吴恩达深度学习RNN前向传播详解:数据向量化与维度构建

2 下载量 111 浏览量 更新于2024-08-30 收藏 166KB PDF 举报
本文主要讲解如何用纯Python实现吴恩达DeepLearning.ai课程中的循环神经网络(RNN)向前传播过程。在深度学习中,RNN是一种特殊类型的神经网络,特别适合处理序列数据,如文本、语音或视频。本文的核心知识点包括以下几个方面: 1. **向量表示及其维度**: - 输入向量:每个单个输入样本x(i)是一维向量,例如在自然语言处理中,如果使用one-hot编码,一个具有5000个单词词汇量的语言会对应一个具有5000个单位的向量,其维度为(5000,)。 - 小批量处理:当使用小批量训练时,比如每批包含20个样本,这些样本构成一个二维数组,如(5000, 20),用变量m表示训练样本数量,因此批量数据的维度为(nx, m)。 - 时间步骤:RNN有多个时间步骤,用变量t表示,如每个样本经历10个时间步骤,则Tx=10。输入数据表示为三维张量(nx, m, Tx)。 2. **RNN Cell**: - RNN Cell是循环神经网络的基本构建块,它负责处理当前时间步的信息并传递给下一个时间步。cell的内部状态和计算是关键部分,用于捕捉序列数据中的长期依赖关系。 3. **RNN向前传播**: - 实现RNN向前传播主要分为两步: a. **单个单元的RNN计算**:这涉及到对每个时间步骤进行计算,包括输入向量与当前隐藏状态的线性变换,加上偏置,然后通过激活函数如sigmoid或ReLU。 b. **拉通整个序列**:将单个单元的计算结果按时间顺序串联起来,形成整个序列的隐藏状态,这是RNN特有的记忆机制,允许信息在时间上流动。 4. **隐藏状态的表示**: - 隐藏状态a是RNN的关键输出,表示从一个时间步到另一个时间步的激活值。单个训练样本的隐藏状态向量长度为na,而包含m个样本的小批量数据的隐藏状态维度则为(na, m)。在考虑时间步后,隐藏状态的最终维度为(na, m, Tx)。 通过理解这些概念和步骤,读者可以手动实现RNN的前向传播过程,这对于深入理解循环神经网络的工作原理和实践应用非常有用。吴恩达的课程和本文提供的指导,可以帮助读者巩固理论知识,并在实践中掌握RNN的具体实现。