deeplearning.ai——构建循环神经网络
目录
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:
- 实现RNN一个时间步所需要的计算过程
- 在时间步上实现一个循环使得能够一次处理所有输入
1.1 - RNN cell
下图描述了一个RNN单元单个时间步的操作:
练习:实现上图中的RNN单元
说明:
- 使用tanh激活函数计算隐藏状态:
- 使用新的隐藏状态计算预测值
- 将储存在缓存cache中
- 返回和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的前向传播
说明:
- 创建一个零向量a,能够存储由RNN计算得到的所有隐藏状态
- 初始化“next”隐藏状态为
- 开始在每一个时间步上循环:更新“next”隐藏状态和缓存值,在a中存储“next”隐藏状态,在y中存储预测值,在cache列表中增加缓存值
- 返回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单元
说明:
- 将和拼接在单个矩阵中:
- 计算上述所有的公式
- 计算预测值
# 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——构建循环神经网络相关推荐
- 神经网络学习小记录2——利用tensorflow构建循环神经网络(RNN)
神经网络学习小记录2--利用tensorflow构建循环神经网络(RNN) 学习前言 RNN简介 tensorflow中RNN的相关函数 tf.nn.rnn_cell.BasicLSTMCell tf ...
- AI之循环神经网络进阶
AI之循环神经网络进阶 GRU 从零实现GNU 载入数据集 初始化参数 GRU模型 训练模型 简洁实现 LSTM 初始化参数 建立LSTM模型 训练模型 简洁实现 深度循环神经网络 双向循环神经网络 ...
- AI之循环神经网络基础
AI之循环神经网络基础 循环神经网络的构造 从零开始实现循环神经网络 one-hot向量 初始化模型参数 定义模型 裁剪梯度 定义预测函数 困惑度 定义模型训练函数 训练模型并创作歌词 循环神经网络的 ...
- Chemistry.AI | 基于循环神经网络(RNN)预测分子性质
Chemistry.AI | 基于卷积神经网络(CNN)预测分子特性 环境准备 Python版本:Python 3.6.8 PyTorch版本:PyTorch1.1.0 RDKit版本:RDKit 2 ...
- 独家 | 数据科学家的必备读物:从零开始用 Python 构建循环神经网络(附代码)...
作者:Faizan Shaikh 翻译:李文婧 校对:张一豪 本文约4300字,建议阅读10+分钟. 本文带你快速浏览典型NN模型核心部分,并教你构建RNN解决相关问题. 引言 人类不会每听到一个句子 ...
- TensorFlow构建循环神经网络
前言 前面在<循环神经网络>文章中已经介绍了深度学习的循环神经网络模型及其原理,接下去这篇文章将尝试使用TensorFlow来实现一个循环神经网络,该例子能通过训练给定的语料生成模型并实现 ...
- deeplearning.ai 改善深层神经网络 week2 优化算法
这一周的主题是优化算法. 1. Mini-batch: 上一门课讨论的向量化的目的是去掉for循环加速优化计算,X = [x(1) x(2) x(3) ... x(m)],X的每一个列向量x(i)是 ...
- deeplearning.ai 改善深度神经网络(正则化、优化、mini-batch等)附代码作业答案
一.初始化 1.为什么神经网络的所有参数不能全部初始化为0>? 若w初始化为0 ,很可能导致模型失效,无法收敛.也就是说如果我们初始将所有的w初始化为0,那么进行前向传播时每一层得到的值都是一样 ...
- Mxnet (20): 循环神经网络(RNN)下
4. 循环神经网络 循环神经网络,通过潜在自回归模型,使用隐藏状态来存储之前的信息.隐藏层和隐藏状态是指两个非常不同的概念.如所解释的,隐藏层是在从输入到输出的路径上从视图中隐藏的层.从技术上讲,隐藏 ...
- 使用循环神经网络(RNN)实现影评情感分类
最近由于做论文的补充实验,需要在rnn上做一下算法验证.找了一下这个博客写的挺好的,但是也有一些bug,暂时先记录一下. 使用循环神经网络(RNN)实现影评情感分类 作为对循环神经网络的实践,我用循环 ...
最新文章
- UML关系(泛化,实现,依赖,关联(聚合,组合))
- c语言运算程序,C语言运算符
- 更换checkbox的原有样式
- es6基础0x012:Map
- python gui界面 tcp_通过python实现TCP编程
- 美股涨跌幅限制是多少?
- 卖酒真的这么赚钱吗?
- 死锁的处理策略——避免死锁
- dump的文件 查看pg_详解linux查看磁盘读写信息--blockdump、blktrace、systemtap
- scala Tuple入门到熟悉
- 新疆财大计算机科学,新疆财经大学计算机科学与工程学院学生参加了多项专业赛事...
- [外星与文明]外星人的离开对地球有什么影响?
- 下列选项中不是具体的python序列类型的是_以下选项中,不是具体的Python序列类型的是...
- 南卡和声阔蓝牙耳机哪个比较好用?降噪效果好的蓝牙耳机推荐
- C-COT -- 超越相关滤波:学习连续卷积算子(Continuous Convolution Operators)
- Stm32中英文手册官网免费
- amh搭建php网站,AMH6.0发布 (免费版本) – AMH终于可以免费用了。
- ionic中的slide-box
- 从档案信息管理到档案知识管理
- Linux——MySQL安装及配置环境变量
热门文章
- react 属性与状态 学习笔记
- LRUCache和FastLRUCache实现分析
- 使用原生JS封装Ajax
- 白盒测试之基本路径测试法[3]
- 天书般的ICTCLAS分词系统代码(二)
- 进化计算-进化策略(Evolutionary Strategies,ES)前世今生与代码共享
- 图像分割学习笔记_1(opencv自带meanshift分割例子)
- 基于极限学习机的自编码器(ELM-AE)
- 从零基础入门Tensorflow2.0 ----一、3.1 实战深度神经网络
- 【GIS导论】实验五 缓冲区分析和网络分析