rnn

循环神经网络和LSTM

我们两清 提交于 2020-01-10 08:39:29
MENU 循环神经网络 定义 应用领域 模型结构 问题 LSTM 基本概念 核心思想 循环神经网络 定义 循环神经网络(Recurrent Neural Network, RNN)是一类以序列(sequence)数据为输入,在序列的演进方向进行递归(recursion)且所有节点(循环单元)按链式连接的递归神经网络(recursive neural network) 应用领域 RNN的应用领域有很多, 可以说只要考虑时间先后顺序的问题都可以使用RNN来解决.这里主要说一下几个常见的应用领域: 自然语言处理(NLP): 主要有视频处理, 文本生成, 语言模型, 图像处理 机器翻译, 机器写小说 语音识别 图像描述生成 文本相似度计算 音乐推荐、网易考拉商品推荐、Youtube视频推荐等新的应用领域. 模型结构 问题 RNN存在梯度消失和梯度爆炸问题(BP算法和长时间依赖造成的): RNN的算法, 它处理时间序列的问题的效果很好, 但是仍然存在着一些问题, 其中较为严重的是容易出现梯度消失或者梯度爆炸的问题(BP算法和长时间依赖造成的). 注意: 这里的梯度消失和BP的不一样,这里主要指由于时间过长而造成记忆值较小的现象. 因此, 就出现了一系列的改进的算法, 这里介绍主要的两种算法: LSTM 和 GRU. LSTM 和 GRU对于梯度消失或者梯度爆炸的问题处理方法主要是:

递归神经网络(RNN)简介

谁说我不能喝 提交于 2020-01-06 18:03:19
在此之前,我们已经学习了前馈网络的两种结构——多层感知器和卷积神经网络,这两种结构有一个特点,就是假设输入是一个独立的没有上下文联系的单位,比如输入是一张图片,网络识别是狗还是猫。但是对于一些有明显的上下文特征的序列化输入,比如预测视频中下一帧的播放内容,那么很明显这样的输出必须依赖以前的输入, 也就是说网络必须拥有一定的”记忆能力”。为了赋予网络这样的记忆力,一种特殊结构的神经网络——递归神经网络(Recurrent Neural Network)便应运而生了。网上对于RNN的介绍多不胜数,这篇《Recurrent Neural Networks Tutorial》对于RNN的介绍非常直观,里面手把手地带领读者利用python实现一个RNN语言模型,强烈推荐。为了不重复作者 Denny Britz的劳动,本篇将简要介绍RNN,并强调RNN训练的过程与多层感知器的训练差异不大(至少比CNN简单),希望能给读者一定的信心——只要你理解了多层感知器,理解RNN便不是事儿:-)。 RNN的基本结构 首先有请读者看看我们的递归神经网络的容貌: 乍一看,好复杂的大家伙,没事,老样子,看我如何慢慢将其拆解,正所谓见招拆招,我们来各个击破。 上图左侧是递归神经网络的原始结构,如果先抛弃中间那个令人生畏的闭环,那其实就是简单”输入层=>隐藏层=>输出层”的三层结构

【翻译】理解 LSTM 网络

折月煮酒 提交于 2020-01-05 02:01:10
目录 理解 LSTM 网络 递归神经网络 长期依赖性问题 LSTM 网络 LSTM 的核心想法 逐步解析 LSTM 的流程 长短期记忆的变种 结论 鸣谢 本文翻译自 Christopher Olah 的博文 Understanding LSTM Networks ,原文以图文并茂的形式,深入浅出地为初学者介绍了 LSTM 网络。 【翻译】理解 LSTM 及其图示 或许可以进一步帮助理解。 理解 LSTM 网络 Understanding LSTM Networks 递归神经网络 Recurrent Neural Networks 人类并不是时刻都从头开始思考。如果你阅读这篇文章,你是在之前词汇的基础上理解每一个词汇,你不需要丢掉一切从头开始思考。你的思想具有延续性。 传统的神经网络无法做到这样,并且这成为了一个主要的缺陷。例如,想像一下你需要对一部电影中正在发生的事件做出判断。目前还不清楚传统的神经网络如何根据先前发生的事件来推测之后发生的事件。 递归神经网络正好用来解决这个问题。递归神经网络的内部存在着循环,用来保持信息的延续性。 Humans don't start their thinking from scratch every second. As you read this essay, you understand each word based on your

Tensorflow: Can't overfit training data with batch size > 1

霸气de小男生 提交于 2020-01-04 07:28:08
问题 I coded a small RNN network with Tensorflow to return the total energy consumption given some parameters. There seem to be a problem in my code. It can't overfit the training data when I use a batch size > 1 (even with only 4 samples!). In the code below, the loss value reaches 0 when I set BatchSize to 1. However, by setting BatchSize to 2, the network fails to overfit and the loss value goes toward 12.500000 and gets stuck there forever. I suspect this has something to do with LSTM states.

Pytorch -- 简单的rnn 记不住的 api

青春壹個敷衍的年華 提交于 2019-12-31 12:09:32
也不太简单的流程图 encoder 数据 vector RNN/ LSTM/ GRU decoder output layer api 流程图看到,需要几个 layer, encoder 这里就选择 nn.Embedding , 循环神经 nn.Embedding torch.nn.Embedding(num_embeddings, embedding_dim, padding_idx=None, max_norm=None, norm_type=2.0, scale_grad_by_freq=False, sparse=False, _weight=None) num_embeddings: 词汇量有多大呀,一共有5000个不同单词(token),你给我传 100 不是很为难我嘛 embedding_dim:每个 vector 用多少数字表示捏? padding_idx:我这没有这个货,你说你用啥填吧,你说的算,不说就按0填入了。 Output: (*, H), where * is the input shape and H=embedding_dim 循环神经 先回顾一下公式 h t = t a n h ( W i h x t + b i h + W h h h t − 1 + b h h ) h_t =tanh(W_{ih}x _t+b_{ih} +W_{hh}h_{t−1

RNN 的 Dropout 参数建议

谁说胖子不能爱 提交于 2019-12-30 14:34:36
原文链接 以下是从原文翻译的中文版本。 Srivastava等。 (2014年)将dropout应用于前馈神经网络和RBM的学习,并指出,在各种任务中,隐藏单元的丢失概率应为 0.5 ,输入单元的丢失概率为 0.2 。 参考: 适用于RNN的Dropout综述 当我将0.5应用于隐藏层,将0.2应用于输入层时,效果很好。 但是在解码器中却不是这样。 在解码器中,我建议不要使用dropout 。 来源: CSDN 作者: dongfanker 链接: https://blog.csdn.net/qq_39492317/article/details/103748964

RNN/LSTM deep learning model?

风流意气都作罢 提交于 2019-12-30 14:07:54
问题 I am trying to build an RNN/LSTM model for binary classification 0 or 1 a sample of my dataset (patient number, time in mill/sec., normalization of X Y and Z, kurtosis, skewness, pitch, roll and yaw, label) respectively. 1,15,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0 1,31,-0.248010047716,0.00378335508419,-0.0152548459993,-86.3738760481,0.872322164158,-3.51314800063,0 1,46,-0.267422664673,0.0051143782875,-0.0191247001961,-85.7662354031,1

Simple example of CuDnnGRU based RNN implementation in Tensorflow

偶尔善良 提交于 2019-12-30 04:57:09
问题 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

Recurrent Neural Networks vs LSTM

走远了吗. 提交于 2019-12-26 11:04:39
Recurrent Neural Network RNN擅长处理序列问题。下面我们就来看看RNN的原理。 可以这样描述:如上图所述,网络的每一个output都会对应一个memory单元用于存储这一时刻网络的输出值, 然后这个memory会作为下一时刻输入的一部分传入RNN,如此循环下去。 下面来看一个例子。 假设所有神经元的weight都为1,没有bias,所有激励函数都是linear,memory的初始值为0. 输入序列[1,1],[1,1],[2,2].....,来以此计算输出。 对输入[1,1],output为1×1+1×1 + 0×1 = 2->2*1+2*1 = 4,最后输出为[4,4],然后将[4,4]存入memory单元,作为下一时刻的部分输入。 最后得到的输出序列是这样的。 而如果每次输入的序列不同,最后的输出序列也会不一样。 在RNN中,每次都是使用相同的网络结构,只是每次的输入和memory会不同。 这样就使我们在句子分析中,能够辨别同一个词出现在不同位置的时候的不同意思。 当然RNN也可以是深层的网络。这里会有两种不同的RNN类型Elman和Jordan。 还有双向的RNN,可以兼顾句子的前后部分。 Long Short-term Memory (LSTM) 上面就是一个LSTM的cell的结构,每个cell有4个input, 和1个output。

深度学习——递归原理

落花浮王杯 提交于 2019-12-25 03:36:55
QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming 递归 循环神经网络 RNN 不同于 神经网络 /卷积 输入batch -n 调节权重参数 w b b 无关联关系 batch–>更新w/b RNN b有相互关系 其希望传入的值 接收 序列化数据输入 b1 --> 时间/序列 联系b2 后同 manate 神经网络数据集 28*28 完整数据---->数据序列化预处理 来源: CSDN 作者: amingMM 链接: https://blog.csdn.net/qq_33608000/article/details/103685498