用纯Python实现循环神经网络RNN向前传播过程(吴恩达DeepLearning.ai作业)

本文详述了如何用纯Python实现循环神经网络RNN的向前传播过程,包括输入向量的维度、隐藏状态、预测值的计算,并介绍了RNN单元的计算步骤和整个RNN的重复执行方式。
摘要由CSDN通过智能技术生成

Google TensorFlow程序员点赞的文章!

 

前言

目录:

    - 向量表示以及它的维度

    - rnn cell

    - rnn 向前传播

 

重点关注:

    - 如何把数据向量化的,它们的维度是怎么来的

    - 一共其实就是两步: 单个单元的rnn计算,拉通来的rnn计算

在看本文前,可以先看看这篇文章回忆一下:

吴恩达deepLearning.ai循环神经网络RNN学习笔记(理论篇)

 

我们将实现以下结构的RNN,在这个例子中 Tx = Ty。

 

向量表示以及它的维度

Input with  nx  number of units

  • 对单个输入样本,x(i) 是一维输入向量。

  • 用语言来举个例子,将具有5k个单词词汇量的语言用one-hot编码成具有5k个单位的向量,所以 x(i) 的维度是(5000,)。

  • 我们将用符号 nx 表示单个训练样本的单位数。

Batches of size m

  • 如果我们取小批量(mini-batches),每个批次有20个训练样本。

  • 为了受益于向量化,我们将20个样本 x(i) 变成一个2维数组(矩阵)。

  • 比如一个维度是(5000,20)的向量。

  • 我们用m来表示训练样本的数量。

  • 所以小批量训练数据的维度是 (nx, m)。

Time steps of size Tx

  • 循环神经网络有多个时间步骤,我们用t来表示。

  • 我们将看到训练样本 x(i) 将经历多个时间步骤 Tx, 比如如果有10个时间步骤,那么 Tx = 10。

3D Tensor of shape (nx, m, Tx)

  • 输入x就是用维度是 (nx, m, Tx) 的三维张量来表示。

Taking a 2D slice for each time step:  

  • 每一个时间步骤,我们用小批量训练样本(不是单个的训练样本)。

  • 所以针对每个时间步骤t,我们用维度是 (nx, m)的2维切片。

  • 我们把它表示成xt。

隐藏状态a的维度

  • a的定义: 从一个时间步骤到另一个时间步骤的激活值 at, 我们把它叫做隐藏状态。

  • 同输入张量 x 一样,对于单个训练样本的隐藏状态,它的向量长度是na。

  • 如果我们是包含了m个训练样本的小批量数据,那么小批量维度是 (na, m)。

  • 如果我们把时间步加进去,那么隐藏状态的维度就是 (na, m, Tx)。

  • 我们将用索引t来遍历时间步,每次操作是从3维张量切片成的2维向量。

  • 我们用at来表示2维的切片,它的维度是 (na, m)。

预测值y^的维度

  • 同输入x和隐藏状态一样,y

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值