rnn

CNN、RNN和DNN的区别

♀尐吖头ヾ 提交于 2019-11-28 04:19:41
CNN(卷积神经网络)、RNN(循环神经网络)、DNN(深度神经网络)的内部网络结构有什么区别?以及他们的主要用途是什么?只知道CNN是局部感受和参数共享,比较适合用于图像这方面。刚入门的小白真心求助 CNN 专门解决图像问题的,可用把它看作特征提取层,放在输入层上,最后用MLP 做分类。 RNN 专门解决时间序列问题的,用来提取时间序列信息,放在特征提取层(如CNN)之后。 DNN 说白了就是 多层网络,只是用了很多技巧,让它能够 deep 。 来源: https://www.cnblogs.com/Liu-xiang/p/9340444.html

CNN、RNN、DNN

只愿长相守 提交于 2019-11-28 04:19:14
一:神经网络   技术起源于上世纪五、六十年代,当时叫感知机(perceptron),包含有输入层、输出层和一个隐藏层。输入的特征向量通过隐藏层变换到达输出层,由输出层得到分类结果。但早期的单层感知机存在一个严重的问题——它对稍微复杂一些的函数都无能为力(如异或操作)。直到上世纪八十年代才被Hition、Rumelhart等人发明的多层感知机克服,就是具有多层隐藏层的感知机。 多层感知机可以摆脱早期离散传输函数的束缚,使用sigmoid或tanh等连续函数模拟神经元对激励的响应,在训练算法上则使用Werbos发明的反向传播BP算法。这就是现在所说的神经网络NN。 神经网络的层数直接决定了它对现实的刻画能力——利用每层更少的神经元拟合更加复杂的函数。但问题出现了——随着神经网络层数的加深,优化函数越来越容易陷入局部最优解,并且这个“陷阱”越来越偏离真正的全局最优。利用有限数据训练的深层网络,性能还不如较浅层网络。同时,另一个不可忽略的问题是随着网络层数增加,“梯度消失”现象更加严重。(具体来说,我们常常使用sigmoid作为神经元的输入输出函数。对于幅度为1的信号,在BP反向传播梯度时,每传递一层,梯度衰减为原来的0.25。层数一多,梯度指数衰减后低层基本上接受不到有效的训练信号。) 2006年,Hition提出了深度学习的概念,引发了深度学习的热潮

深度学习——keras训练RNN模型

若如初见. 提交于 2019-11-28 02:29:55
深度学习——keras训练RNN模型 RNN原理:(Recurrent Neural Networks)循环神经网络。它在隐藏层的各个神经元之间是有相互作用的,能够处理那些输入之间前后有关联的问题。在 RNN 中,前一时刻的输出会和下一时刻的输入一起传递下去,相当于一个随时间推移的数据流。和前馈神经网络不同的是,RNN 可以接收序列化的数据作为输入,也可以返回序列化值作为输出,对时间序列上的变化进行建模。由于样本出现的时间顺序对于自然语言处理、语音识别、手写体识别等应用非常重要,故RNN模型在该领域内广泛被认可。 用 RNN 训练语言模型生成文本 训练代码详解: 思路整理:我们使用RNN对datasets.mnist数据进行分类,将图像28×28的分辨率理解为一个(信息行数×时间节点)序列数据,建立RNN_cell分类训练,并计算误差、精度。 导入相关模块(module): import numpy as np np.random.seed( 1337 ) # for reproducibility from keras.datasets import mnist from keras.utils import np_utils from keras.models import Sequential from keras.layers import SimpleRNN,

算法体系

爷,独闯天下 提交于 2019-11-28 01:07:30
仅供个人学习用 算法 CNN:卷积神经网络 Convolutional neural network RNN:循环神经网络 Recurrent neural networks LSTM:长短期记忆 Long short term memory GRU : 门循环单元 Gated recurrent units FFNN:前馈神经网络 Feed forward neurral network BP:反向传播 Backpropagation RBFN:径向基函数网络 Radial basis function network HN:霍普菲尔网络 Hopfield network MC:马尔可夫链 Markov Chain BM:玻尔兹曼机 Boltzmann machine RBM:受限玻尔兹曼机 Restricted Boltzmann machine GAN:生成式对抗网络 Generative adversarial networks AE:自动编码器 Autoencoder SAE:稀疏自编码机 Sparse autoencoders VAE:变分自编码机 Variational autoencoders DAE:去噪自编码机 Denoising autoencoders DBN:深度信念网络 Deep belief networks SVM:支持向量机 Support

基于循环神经网络实现基于字符的语言模型(char-level RNN Language Model)-tensorflow实现

喜你入骨 提交于 2019-11-28 00:24:08
前面几章介绍了卷积神经网络在自然语言处理中的应用,这是因为卷积神经网络便于理解并且易上手编程,大多教程(比如tensorflow的官方文档就先CNN再RNN)。但RNN的原理决定了它先天就适合做自然语言处理方向的问题(如语言模型,语音识别,文本翻译等等)。因此接下来一段时间应该会着重研究RNN,LSTM,Attention等在NLP的应用及其tensorflow实现。 在介绍本篇文章之前,先推荐几篇学习内容: 语言模型部分: 1、 CS224d 第四篇notes ,首先讲语言模型的问题,然后推导了RNN、biRNN和LSTM。比99%的中文博客要靠谱。 2、 language model and word2vec ,前半部分是语言模型,后半部分介绍了Skip-gram等模型,并引入word2vec。 RNN和LSTM部分: 1、 The Unreasonable Effectiveness of Recurrent Neural Networks 该文主要介绍了RNN在NLP中的应用,很直观。 2、 Understanding LSTM Networks LSTM过程中很完美的公式,相信看一遍就能记住。 3、 2的中文版 对自己英文不自信的同学可以看这个译文。 本篇文章实现基于字符的RNN语言模型,源自于 Understanding LSTM Networks ,在该篇文章中也附有

CS224N笔记——RNN和语言模型

删除回忆录丶 提交于 2019-11-27 22:02:03
目录 传统语言模型 循环神经网络语言模型 损失函数 训练RNN时的困难 梯度消失问题 梯度消失实例 防止梯度爆炸 减缓梯度消失 困惑度结果 问题:softmax太大且太慢 一个实现技巧 序列模型的应用 双向和深层RNNs 双向RNNs 深层双向RNNs 评测 传统语言模型 语言模型就是计算一个单词序列(句子)的概率 的模型。可以用于机器翻译中,判断译文序列中一种词序的自然程度高于另一种,判断一种用词选择优于另一种。 为了简化问题,引入马尔科夫假设,句子的概率通常是通过待预测单词之前长度为n的窗口建立条件概率来预测: 为了估计此条件概率,常用极大似然估计,比如对于Bigram和Trigram模型,有: 在数据量足够的情况下,n-gram中的n越大,模型效果越好。但实际上,数据量总是不如人意,这时候一些平滑方法就不可或缺。另外,这些ngram可能会占用上G的内存,在最新的研究中,一个1260亿的语料在140G内存的单机上花了2.8天才得到结果。 循环神经网络语言模型 新的语言模型是利用RNN对序列建模,复用不同时刻的线性非线性单元及权值,理论上之前所有的单词都会影响到预测单词。 所需内存只与词表大小成正比,不取决于序列长度。 给定一个词向量序列: ,在每个时间点上都有隐藏层的特征表示: 损失函数 分类问题中常见的交叉熵损失函数: 在大小为T的整个语料上的交叉熵误差为:

RNN入门(一)识别MNIST数据集

微笑、不失礼 提交于 2019-11-27 13:39:48
RNN介绍   在读本文之前,读者应该对全连接神经网络(Fully Connected Neural Network, FCNN)和卷积神经网络( Convolutional Neural Network, CNN)有一定的了解。对于FCNN和CNN来说,他们能解决很多实际问题,但是它们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的 。而在现实生活中,我们输入的向量往往存在着前后联系,即前一个输入和后一个输入是有关联的,比如文本,语音,视频等,因此,我们需要了解深度学习中的另一类重要的神经网络,那就是循环神经网络(Recurrent Neural Network,RNN).   循环神经网络(Recurrent Neural Network,RNN)依赖于一个重要的概念:序列(Sequence),即输入的向量是一个序列,存在着前后联系。简单RNN的结构示意图如下: 相比于之前的FCNN,RNN的结构中多出了一个自循环部分,即W所在的圆圈,这是RNN的精华所在,它展开后的结构如下: 对于t时刻的输出向量 \(o_{t}\) ,它的输出不仅仅依赖于t时刻的输入向量 \(x_{t}\) ,还依赖于t-1时刻的隐藏层向量 \(s_{t-1}\) ,以下是输出向量 \(o_{t}\) 的计算公式: \[s_{t}=f(Ux_{t}+Ws_{t-1})\] \[o_{t

RNN识别MNIST数据集

空扰寡人 提交于 2019-11-27 13:39:24
RNN介绍   在读本文之前,大家应该对全连接神经网络(Fully Connected Neural Network, FCNN)和卷积神经网络( Convolutional Neural Network, CNN)有一定的了解。对于FCNN和CNN来说,他们能解决很多实际问题,但是它们都只能单独的取处理一个个的输入,前一个输入和后一个输入是完全没有关系的 。而在现实生活中,我们输入的向量往往存在着前后联系,即前一个输入和后一个输入是有关联的,比如文本,语音,视频等,因此,我们需要了解深度学习中的另一类重要的神经网络,那就是循环神经网络(Recurrent Neural Network,RNN).   循环神经网络(Recurrent Neural Network,RNN)依赖于一个重要的概念:序列(Sequence),即输入的向量是一个序列,存在着前后联系。简单RNN的结构示意图如下: 简单RNN的结构示意图   相比于之前的FCNN,RNN的结构中多出了一个自循环部分,即W所在的圆圈,这是RNN的精华所在,它展开后的结构如下: RNN展开后的结构   对于t时刻的输出向量 ,它的输出不仅仅依赖于t时刻的输入向量 ,还依赖于t-1时刻的隐藏层向量 ,以下是输出向量 的计算公式:   其中,第二个式子为输出层的计算公式,输出层为全连接层,V为权重矩阵,g为激活函数。第一个式子中

RNN

泄露秘密 提交于 2019-11-27 13:35:37
RNN(Recurrent Neural Networks)循环神经网络 广泛应用于自然语言处理(NLP,Natural Language Processing) Back Propagation Through Time Vanishing gradient problem LSTM, 长期依赖,long term dependencies the clouds are in the sky,推测最后一个词sky I grew up in France...I speak fluent French,推测最后一个词French,间隔比较大 定向循环,可以持久化信息 人们阅读时,都是基于之前的积累来理解当前的词,而不总是从一片空白开始。 序列 参考链接: http://www.wildml.com/2015/09/recurrent-neural-networks-tutorial-part-1-introduction-to-rnns/ 来源: https://www.cnblogs.com/yangwenhuan/p/8046450.html

pytorch1.0实现RNN for Regression

十年热恋 提交于 2019-11-27 13:10:47
import torch from torch import nn import numpy as np import matplotlib.pyplot as plt # 超参数 # Hyper Parameters TIME_STEP = 10 # rnn time step INPUT_SIZE = 1 # rnn input size LR = 0.02 # learning rate # 生成数据 # show data steps = np.linspace(0, np.pi * 2, 100, dtype=np.float32) # float32 for converting torch FloatTensor x_np = np.sin(steps) # 输入 y_np = np.cos(steps) # 目标 plt.plot(steps, y_np, 'r-', label='target (cos)') plt.plot(steps, x_np, 'b-', label='input (sin)') plt.legend(loc='best') plt.show() # 定义神经网络 # 对每一个 r_out 都得放到 Linear 中去计算出预测的 output, 所以能用一个 for loop 来循环计算. class RNN(nn.Module):