Google TensorFlow程序员点赞的文章!
前言
目录:
- 向量表示以及它的维度
- rnn cell
- rnn 向前传播
重点关注:
- 如何把数据向量化的,它们的维度是怎么来的
- 一共其实就是两步: 单个单元的rnn计算,拉通来的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, 我们把它叫做隐