目录

1 - Forward propagation for the basic Recurrent Neural Network

1.1 - RNN cell

1.2 - RNN forward pass

2 - Long Short-Term Memory (LSTM) network

2.1 - LSTM cell

2.2 - Forward pass for LSTM

3 - Backpropagation in recurrent neural networks (OPTIONAL / UNGRADED)

3.1 - Basic RNN backward pass


本文中的符号:

  • 上标[l]表示与第l层相关的对象,例如:是第4层的激活值,是第5层的参数。
  • 上标(i)表示与第i个样本相关的对象,例如:是第i个训练样本输入。
  • 上标<t>表示在第t个时间步的对象,例如:是第t个时间步的输入x,是样本i在第t个时间步的输入。
  • 下标i表示向量的第i个输入,例如:表示在l层的激活值的第i个输入。

1 - Forward propagation for the basic Recurrent Neural Network

在这个例子中,

如何实现一个RNN:

  1. 实现RNN一个时间步所需要的计算过程
  2. 时间步上实现一个循环使得能够一次处理所有输入

1.1 - RNN cell

下图描述了一个RNN单元单个时间步的操作:

练习:实现上图中的RNN单元

说明:

  1. 使用tanh激活函数计算隐藏状态:
  2. 使用新的隐藏状态计算预测值
  3. 储存在缓存cache中
  4. 返回和cache

已在m个样本上向量化,因此的维度为的维度为

# compute next activation state using the formula given above  (n_a, m)
a_next = np.tanh(np.dot(Wax, xt) + np.dot(Waa, a_prev) + ba)
# compute output of the current cell using the formula given above
yt_pred = softmax(np.dot(Wya, a_next) + by)

1.2 - RNN forward pass

练习:实现RNN的前向传播

说明:

  1. 创建一个零向量a,能够存储由RNN计算得到的所有隐藏状态
  2. 初始化“next”隐藏状态为
  3. 开始在每一个时间步上循环:更新“next”隐藏状态和缓存值,在a中存储“next”隐藏状态,在y中存储预测值,在cache列表中增加缓存值
  4. 返回a,y和cache
# initialize "a" and "y" with zeros (≈2 lines)
a = np.zeros((n_a, m, T_x))
y_pred = np.zeros((n_y, m, T_x))# Initialize a_next (≈1 line)
a_next = a0# loop over all time-steps
for t in range(T_x):# Update next hidden state, compute the prediction, get the cache (≈1 line)a_next, yt_pred, cache = rnn_cell_forward(x[:,:,t], a_next, parameters)# 这里a_prev不能用a[:,:,t-1],因为t从0开始遍历,第一个a_prev为a[:,:,-1],无效值,只能用a_next自身遍历# Save the value of the new "next" hidden state in a (≈1 line)a[:,:,t] = a_next# Save the value of the prediction in y (≈1 line)y_pred[:,:,t] = yt_pred# Append "cache" to "caches" (≈1 line)caches.append(cache)

2 - Long Short-Term Memory (LSTM) network

2.1 - LSTM cell

练习:实现上图中的LSTM单元

说明:

  1. 拼接在单个矩阵中:
  2. 计算上述所有的公式
  3. 计算预测值​​​​​​​
# Concatenate a_prev and xt (≈3 lines)
concat = np.zeros((n_a+n_x, m))
concat[: n_a, :] = a_prev
concat[n_a :, :] = xt# Compute values for ft, it, cct, c_next, ot, a_next using the formulas given figure (4) (≈6 lines)
ft = sigmoid(np.dot(Wf, concat) + bf)
it = sigmoid(np.dot(Wi, concat) + bi)
cct = np.tanh(np.dot(Wc, concat) + bc)
c_next = ft * c_prev + it * cct
ot = sigmoid(np.dot(Wo, concat) + bo)
a_next = ot * np.tanh(c_next)# Compute prediction of the LSTM cell (≈1 line)
yt_pred = softmax(np.dot(Wy, a_next) + by)

2.2 - Forward pass for LSTM

练习:实现lstm_forward()在时间步上运行LSTM

提示:被初始化为全零

# Retrieve dimensions from shapes of xt and Wy (≈2 lines)
n_x, m, T_x = x.shape
n_y, n_a = parameters['Wy'].shape# initialize "a", "c" and "y" with zeros (≈3 lines)
a = np.zeros((n_a, m, T_x))
c = np.zeros((n_a, m, T_x))
y = np.zeros((n_y, m, T_x))# Initialize a_next and c_next (≈2 lines)
a_next = a0
c_next = np.zeros((n_a, m))# loop over all time-steps
for t in range(T_x):# Update next hidden state, next memory state, compute the prediction, get the cache (≈1 line)a_next, c_next, yt, cache = lstm_cell_forward(x[:,:,t], a_next, c_next, parameters)# Save the value of the new "next" hidden state in a (≈1 line)a[:,:,t] = a_next# Save the value of the prediction in y (≈1 line)y[:,:,t] = yt# Save the value of the next cell state (≈1 line)c[:,:,t]  = c_next# Append the cache into caches (≈1 line)caches.append(cache)

3 - Backpropagation in recurrent neural networks (OPTIONAL / UNGRADED)

3.1 - Basic RNN backward pass

deeplearning.ai——构建循环神经网络相关推荐

  1. 神经网络学习小记录2——利用tensorflow构建循环神经网络(RNN)

    神经网络学习小记录2--利用tensorflow构建循环神经网络(RNN) 学习前言 RNN简介 tensorflow中RNN的相关函数 tf.nn.rnn_cell.BasicLSTMCell tf ...

  2. AI之循环神经网络进阶

    AI之循环神经网络进阶 GRU 从零实现GNU 载入数据集 初始化参数 GRU模型 训练模型 简洁实现 LSTM 初始化参数 建立LSTM模型 训练模型 简洁实现 深度循环神经网络 双向循环神经网络 ...

  3. AI之循环神经网络基础

    AI之循环神经网络基础 循环神经网络的构造 从零开始实现循环神经网络 one-hot向量 初始化模型参数 定义模型 裁剪梯度 定义预测函数 困惑度 定义模型训练函数 训练模型并创作歌词 循环神经网络的 ...

  4. Chemistry.AI | 基于循环神经网络(RNN)预测分子性质

    Chemistry.AI | 基于卷积神经网络(CNN)预测分子特性 环境准备 Python版本:Python 3.6.8 PyTorch版本:PyTorch1.1.0 RDKit版本:RDKit 2 ...

  5. 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)...

    作者:Faizan Shaikh 翻译:李文婧 校对:张一豪 本文约4300字,建议阅读10+分钟. 本文带你快速浏览典型NN模型核心部分,并教你构建RNN解决相关问题. 引言 人类不会每听到一个句子 ...

  6. TensorFlow构建循环神经网络

    前言 前面在<循环神经网络>文章中已经介绍了深度学习的循环神经网络模型及其原理,接下去这篇文章将尝试使用TensorFlow来实现一个循环神经网络,该例子能通过训练给定的语料生成模型并实现 ...

  7. deeplearning.ai 改善深层神经网络 week2 优化算法

    这一周的主题是优化算法. 1.  Mini-batch: 上一门课讨论的向量化的目的是去掉for循环加速优化计算,X = [x(1) x(2) x(3) ... x(m)],X的每一个列向量x(i)是 ...

  8. deeplearning.ai 改善深度神经网络(正则化、优化、mini-batch等)附代码作业答案

    一.初始化 1.为什么神经网络的所有参数不能全部初始化为0>? 若w初始化为0 ,很可能导致模型失效,无法收敛.也就是说如果我们初始将所有的w初始化为0,那么进行前向传播时每一层得到的值都是一样 ...

  9. Mxnet (20): 循环神经网络(RNN)下

    4. 循环神经网络 循环神经网络,通过潜在自回归模型,使用隐藏状态来存储之前的信息.隐藏层和隐藏状态是指两个非常不同的概念.如所解释的,隐藏层是在从输入到输出的路径上从视图中隐藏的层.从技术上讲,隐藏 ...

  10. 使用循环神经网络(RNN)实现影评情感分类

    最近由于做论文的补充实验,需要在rnn上做一下算法验证.找了一下这个博客写的挺好的,但是也有一些bug,暂时先记录一下. 使用循环神经网络(RNN)实现影评情感分类 作为对循环神经网络的实践,我用循环 ...

最新文章

  1. UML关系(泛化,实现,依赖,关联(聚合,组合))
  2. c语言运算程序,C语言运算符
  3. 更换checkbox的原有样式
  4. es6基础0x012:Map
  5. python gui界面 tcp_通过python实现TCP编程
  6. 美股涨跌幅限制是多少?
  7. 卖酒真的这么赚钱吗?
  8. 死锁的处理策略——避免死锁
  9. dump的文件 查看pg_详解linux查看磁盘读写信息--blockdump、blktrace、systemtap
  10. scala Tuple入门到熟悉
  11. 新疆财大计算机科学,新疆财经大学计算机科学与工程学院学生参加了多项专业赛事...
  12. [外星与文明]外星人的离开对地球有什么影响?
  13. 下列选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是...
  14. 南卡和声阔蓝牙耳机哪个比较好用?降噪效果好的蓝牙耳机推荐
  15. C-COT -- 超越相关滤波:学习连续卷积算子(Continuous Convolution Operators)
  16. Stm32中英文手册官网免费
  17. amh搭建php网站,AMH6.0发布 (免费版本) – AMH终于可以免费用了。
  18. ionic中的slide-box
  19. 从档案信息管理到档案知识管理
  20. Linux——MySQL安装及配置环境变量

热门文章

  1. react 属性与状态 学习笔记
  2. LRUCache和FastLRUCache实现分析
  3. 使用原生JS封装Ajax
  4. 白盒测试之基本路径测试法[3]
  5. 天书般的ICTCLAS分词系统代码(二)
  6. 进化计算-进化策略(Evolutionary Strategies,ES)前世今生与代码共享
  7. 图像分割学习笔记_1(opencv自带meanshift分割例子)
  8. 基于极限学习机的自编码器(ELM-AE)
  9. 从零基础入门Tensorflow2.0 ----一、3.1 实战深度神经网络
  10. 【GIS导论】实验五 缓冲区分析和网络分析