rnn

Simple example of CuDnnGRU based RNN implementation in Tensorflow

随声附和 提交于 2019-11-30 14:33:18
I am using the following code for standard GRU implementation: def BiRNN_deep_dynamic_FAST_FULL_autolength(x,batch_size,dropout,hidden_dim): seq_len=length_rnn(x) with tf.variable_scope('forward'): lstm_cell_fwd =tf.contrib.rnn.GRUCell(hidden_dim,kernel_initializer=tf.contrib.layers.xavier_initializer(),bias_initializer=tf.contrib.layers.xavier_initializer()) lstm_cell_fwd = tf.contrib.rnn.DropoutWrapper(lstm_cell_fwd, output_keep_prob=dropout) with tf.variable_scope('backward'): lstm_cell_back =tf.contrib.rnn.GRUCell(hidden_dim,kernel_initializer=tf.contrib.layers.xavier_initializer(),bias

机器学习之RNN循环神经网络与LSTM

你离开我真会死。 提交于 2019-11-30 10:50:24
RNN循环神经网络 RNN循环神经网络,又称为时间循环神经网络。同样缩写是RNN的还有一种叫做递归神经网络(结构循环时间网络)。 1.基本循环神经网络 其中U、V、W 均为权重值,图片左边的基本循环图等价于右边分解后的循环图。从右图中我们可以看出隐藏值S t 取决于S t-1 和 x t 。 所以可以写出以下公式:其中 g()与 f() 为激活函数. 2.双向循环神经网络 一个参与正向计算的 A与一个参与反向计算的 A' 。所以这里就相当于又多了一个关系,即S t 也与S t+1 有关。因此可以写出以下公式: 3.深层循环神经网络(多层隐藏层) 循环神经网络的训练 1.BPTT算法 流程: 前向计算每个神经元的输出值; 反向计算每个神经元的误差项 值δ,它是误差函数E对神经元j的加权输入 的偏导数; 计算每个权重的梯度。 使用梯度下降算法更新权重 前向计算: 若写成矩阵就是下面这样的。 误差计算 计算权重的梯度: LSTM长短期记忆 因为在梯度的计算过程中是累乘的,所以当数值大于或小于1就会出现累乘为无穷(爆炸)或0(消失),LSTM解决RNN训练中的梯度消失或者爆炸的方法。 LSTM的思路是这样的,在原先的隐藏层中加入一个单元状态C   正是使用这个状态单元C,才能起到控制作用,其运作图如下图所示 三个重要的门:遗忘门 .输入门 、输出门 遗忘门:决定了上一时刻的单元状态C t

[学习笔记] CNN与RNN方法结合

大兔子大兔子 提交于 2019-11-30 08:34:26
CNN与RNN的结合 问题 前几天学习了RNN的推导以及代码,那么问题来了,能不能把CNN和RNN结合起来,我们通过CNN提取的特征,能不能也将其看成一个序列呢?答案是可以的。 但是我觉得一般直接提取的特征喂给哦RNN训练意义是不大的,因为RNN擅长处理的是不定长的序列,也就是说,seq size是不确定的,但是一般图像特征的神经元数量都是定的,这个时候再接个rnn说实话意义不大,除非设计一种结构可以让网络不定长输出。(我的一个简单想法就是再设计一条之路去学习一个神经元权重mask,按照规则过滤掉一些神经元,然后丢进rnn或者lstm训练) 如何实现呢 import torch import torch.nn as nn from torchsummary import summary from torchvision import datasets,transforms import torch.optim as optim from tqdm import tqdm class Model(nn.Module): def __init__(self): super(Model,self).__init__() self.feature_extractor = nn.Sequential( nn.Conv2d(1,16,kernel_size = 3,stride=2), nn

LSTM 长短期记忆

為{幸葍}努か 提交于 2019-11-30 03:23:15
LSTM是RNN的变形,也就是循环神经网络的形式之一,主要解决传统RNN记忆不了太长时间数据问题(像是一个容易遗忘的老人,记不住太久远之前的信息,所以就出现了LSTM,让他只记住有用的信息) 传统RNN的问题分析:比如输入文本是我今天要做红烧排骨,首先要准备排骨,然后…,最后一道美味的菜就出锅了.这个时候我们要让RNN来判断我们到底做了什么菜,RNN可能给出辣子鸡这个答案,然后就反向的去推导误差,如果每一步误差都小于1,那么等到连乘反向到t1,误差就消失了,这叫梯度消失,如果每一步的误差都大于1,那么反向到t1的时候,误差就变成了一个无穷大的数,就把RNN撑死了,这叫梯度爆炸(虽然可以用剪裁来解决) 梯度消失: 梯度爆炸: 为了解决上面出现的梯度消失和梯度爆炸的问题,就出现了LSTM(长短期记忆) 具体LSTM模型是怎么实现的呢? 相对于传统的RNN,LSTM的输入有x(t),a(t-1),x(t)变成了x(t),a(t-1),c(t-1),不仅仅是参数数量上的变化,还有就是 a(t-1)的求法也不一样,下面是LSTM一个cell的计算过程 来源: https://blog.csdn.net/weixin_43027596/article/details/101022774

RNN系列

一个人想着一个人 提交于 2019-11-30 01:35:58
漫谈RNN之梯度消失及梯度爆炸:http://bbs.imefuture.com/article/4405 漫谈RNN之长短期记忆模型LSTM:http://bbs.imefuture.com/article/4406 漫谈RNN之长短期记忆模型LSTM(续):http://bbs.imefuture.com/article/4407 来源: https://www.cnblogs.com/liangxinxinbo/p/11544153.html

李宏毅深度学习视频摘要

痴心易碎 提交于 2019-11-29 08:54:41
视频地址 李宏毅深度学习(nlp)2017 视频摘要 P1 讲了RNN,LSTM ,GRU网络构造 P2 讲了卷积的原理,pooling的原理,已经不太常规的poolling方法。另外提到一种特殊的Rnn结构stackRNN P3 讲了深度学习反向传播的知识,其中提到链式法则,fc网络的bp方法和RNN的bp方法 P4 讲语言模型 n-gram : P(a|b)直接统计语料库的概率 nn-based-LM: P(a|b)由网络计算出来,其原理是matrix-factorization RNN-based-LM: P(a|b,c)由网络计算出,RNN可以用前一次计算的隐状态,相比传统方法计算P(a|b,c)参数计算量更少。 P5 Spatial Transfromer Layer 主要思路是在图像进入CNN之前,先经过 旋转 和 缩放 操作,然后在进行识别。主要解决了cnn网络无法识别经过 旋转 和 缩放 的图像。(感觉好像random corp 也能部分解决) 该转换层仅仅需要6个参数,对图像的左边进行转换: [ x b e f o r e y b e f o r e ] ∗ [ w 1 w 2 w 3 w 4 ] + [ b 1 b 2 ] = [ x a f t e r y a f t e r ] \begin{bmatrix}x_{before}\\ y_{before}\\

RNN

断了今生、忘了曾经 提交于 2019-11-29 05:00:56
目录 1. 为什么需要RNN 2. LSTM的结构 3. LSTM网络 4. RNN 的评估 5. RNN的应用 6. Attention-based model 1. 为什么需要RNN? 传统的神经网络,一个输入会对应一个输出,如果输入不变,那输出也不会变。如下,一个Tappei是属于目的地类的,但换一句话又属于出发地类。这个时候就需要神经网络具有记忆功能。 实际上,循环神经网络是一类神经网络,一类具有记忆功能的神经网络。一类把上一个训练的结果带到下一次训练的神经网络 这就是一个简单的RNN,它有一个隐层,这个隐层的输出会被带到下一次训练中,和下一次训练的输入数据共同作为网络的输入 这是一个双向的RNN,这样的好处是不仅可以看到上文,还可以看到下文 2. LSTM的结构 下面,LSTM隆重登场! LSTM是一种RNN, 实际上,现在大家讲在做RNN的时候,其实他们指的就是在做 LSTM。 LSTM已经成为了一种标准。 这是LSTM的一个Memory Cell, 也就是一个单元: LSTM的一个memory cell 一共有4个输入,一个输出。 这种网络结构的好处就是 可以控制一个词是否应该输入,上一个词的信息是否应该被遗忘以及是否应该输出 这是一个LSTM的栗子: //篇幅原因,还有几幅图就不展示了,可以前往李老师的RNN part I 的ppt里面查看。 3. LSTM网络

LSTM Keras API predicting multiple outputs

安稳与你 提交于 2019-11-29 03:59:48
问题 I'm training an LSTM model using as input a sequence of 50 steps of 3 different features laid out as below: #x_train [[[a0,b0,c0],.....[a49,b49,c49]], [a1,b1,c1]......[a50,b50,c50]], ... [a49,b49,c49]...[a99,b99,c99]]] Using the following dependent variable #y_train [a50, a51, a52, ... a99] The code below works to predict just a, how do I get it to predict and return a vector of [a,b,c] at a given timestep? def build_model(): model = Sequential() model.add(LSTM( input_shape=(50,3), return

百度PaddlePaddle:

[亡魂溺海] 提交于 2019-11-29 03:50:19
百度正式发布PaddlePaddle深度强化学习框架PARL 近日,百度 PaddlePaddle 正式发布了深度强化学习框架 PARL,同时开源了基于该框架的、在 NeurIPS 2018 强化学习赛事中夺冠的模型完整训练代码。 项目地址如下:https://github.com/PaddlePaddle/PARL PARL 框架的名字来源于 PA ddlepaddle R einfocement L earning,是一款基于百度 PaddlePaddle 打造的深度强化学习框架。PARL 与现有强化学习工具和平台相比,具有更高的可扩展性、可复现性和可复用性,支持大规模并行和稀疏特征,能够快速 对工业级应用案例的验证。 为了帮助用户快速搭建可以和环境交互的机器人,PARL 抽象出数个基础类,包括 Model、Algorithm、Agent 等。 Model 类负责强化学习算法中的网络前向计算(forward)部分,通常嵌套在 Algorithm 类中。 Algorithm 类则定义了网络的更新机制(backward),通常属于一个 Agent。 Agent 类负责和环境进行交互,负责数据 I/O,并且收集数据训练集下的 algorithm。 通过这样的设计方案,PARL 保证了算法的可扩展性:针对同一个场景,用户想调研不同的网络结构对算法效果影响的时候,比如调研 RNN

【deeplearing.ai】 RNN进阶以及Attention模型

白昼怎懂夜的黑 提交于 2019-11-29 03:22:58
RNN进阶以及Attention模型 1 摘要 不管是CNN和RNN,模型都可以看作是Decode和Encode两个过程,这是一个统一的角度。其次,介绍了RNN中的搜索算法Beam Search方法,以及它的优化和分析。关于如何评定翻译好坏,怎么给翻译的好坏设计监督方式,介绍了Bleu Score的方法。最后,介绍了Attention模型。 Decode-Encode Beam Search Bleu Score Attention Model 2 从Decode-Encode角度审视模型 2.1 sequence-to-sequence和image capture 上图是典型的RNN模型,红框中的Cell,可以视为对序列进行解码,cell中保存了序列的所有信息。其实在CNN中,最后的卷积层中,同样包含了图片的所有信息。 这里有一个非常重要的idea。 不管是什么模型,做的事只有一件,对目标进行解码,抽取出所有特征。 我们再来看Image Capture模型。 最终的卷积层包含了所有特征,而输出,取决于我们如何设计监督函数,或者说,如何对特征进行编码。 3 Beam Search 这是一个在机器翻译背景下提出的概念。在机器翻译过程中,每个time step选择概率最大的词并不一定是最好的翻译。这很好理解。每次选择最大的,其实是贪婪算法,贪婪的结果不一定是最优,尤其是在长句翻译的时候