lstm

(KWS-LSTM)Max-pooling loss training of long short-term memory networks for small-footprint KWS

大憨熊 提交于 2020-02-20 11:36:41
会议:2016 IEEE口语技术研讨会(SLT) 论文: Max-pooling loss training of long short-term memory networks for small-footprint keyword spotting 作者: Ming Ming,Anirudh Raju,George Tucker,Sankaran Panchapagesan,Gengshen Fu,Arindam Mandal,Spyros Matsoukas,Nikko Strom,Shiv Vitaladevuni Abstract 我们提出了一种基于最大池的损失函数,用于训练长短期内存(LSTM)网络以实现占用空间少的关键字发现(KWS),低CPU,内存和延迟要求。可以通过使用交叉熵损失训练网络进行初始化来进一步指导最大池损失训练。采用基于后验平滑的评估方法来衡量关键字发现效果。我们的实验结果表明,使用交叉熵损失或最大池损失训练的LSTM模型优于交叉熵损失训练的基线前馈深度神经网络(DNN)。此外,与经过交叉熵损失训练的LSTM相比,具有随机初始化网络的最大池损失训练的LSTM性能更好。最后,通过交叉熵预训练网络初始化的经过最大池损耗训练的LSTM显示了最佳性能, Introduction 数十年来,关键字搜寻一直是活跃的研究领域

动手学深度学习之ModernRNN

风格不统一 提交于 2020-02-19 06:07:25
这节内容介绍几个经典的RNN模型,有GRU/LSTM/深度循环神经网络/双向循环神经网络。在吴恩达老师的DL课程中,曾说过GRU是LSTM的改进,GRU单元更加简单,构筑大型网络结构更有优势,而LSTM单元功能更加强大;深度循环神经网络就是在一个RNN单元中层数更深,拥有更强的抽取特征的能力;双向循环神经网络在机器翻译任务中十分有效,如对某个词的词义的确定既需要前面单词也需要后面单词的配合。另外值得一提的是,这些网络拥有长期记忆的方法,可以避免梯度消失的问题。 GRU R t = σ ( X t W x r + H t − 1 W h r + b r ) Z t = σ ( X t W x z + H t − 1 W h z + b z ) H ~ t = tanh ⁡ ( X t W x h + ( R t ⊙ H t − 1 ) W h h + b h ) H t = Z t ⊙ H t − 1 + ( 1 − Z t ) ⊙ H ~ t \begin{aligned} R_{t} &=\sigma\left(X_{t} W_{x r}+H_{t-1} W_{h r}+b_{r}\right) \\ Z_{t} &=\sigma\left(X_{t} W_{x z}+H_{t-1} W_{h z}+b_{z}\right) \\ \widetilde{H}_{t}=&

keras_ LSTM 层和 GRU 层

倖福魔咒の 提交于 2020-02-18 03:54:32
6.2.2 理解 LSTM 层和 GRU 层 参考: https://blog.csdn.net/qq_30614345/article/details/98714874 6.2.4 小结 现在你已经学会了以下内容。 ‰ 循环神经网络(RNN)的概念及其工作原理。 ‰ 长短期记忆(LSTM)是什么,为什么它在长序列上的效果要好于普通 RNN。 ‰ 如何使用 Keras 的 RNN 层来处理序列数据。 接下来,我们将介绍 RNN 几个更高级的功能,这可以帮你有效利用深度学习序列模型 6.2. 2 理解 LSTM 层和 GRU 层 SimpleRNN 并不是 Keras 中唯一可用的循环层,还有另外两个: LSTM 和 GRU。在实践中总会用到其中之一,因为 SimpleRNN 通常过于简化,没有实用价值。 SimpleRNN 的最大问题是,在时刻 t,理论上来说,它应该能够记住许多时间步之前见过的信息,但实际上它是不可能学 到这种长期依赖的。其原因在于梯度消失问题(vanishing gradient problem),这一效应类似于在层数较多的非循环网络(即前馈网络)中观察到的效应:随着层数的增加,网络最终变得无法训练。 Hochreiter、 Schmidhuber 和 Bengio 在 20 世纪 90 年代初研究了这一效应的理论原因 a。LSTM 层和 GRU

pytorch 中LSTM模型获取最后一层的输出结果,单向或双向

蓝咒 提交于 2020-02-17 19:00:35
单向LSTM import torch.nn as nn import torch seq_len = 20 batch_size = 64 embedding_dim = 100 num_embeddings = 300 hidden_size = 128 number_layer = 3 input = torch.randint(low=0,high=256,size=[batch_size,seq_len]) #[64,20] embedding = nn.Embedding(num_embeddings,embedding_dim) input_embeded = embedding(input) #[64,20,100] #转置,变换batch_size 和seq_len # input_embeded = input_embeded.transpose(0,1) # input_embeded = input_embeded.permute(1,0,2) #实例化lstm lstm = nn.LSTM(input_size=embedding_dim,hidden_size=hidden_size,batch_first=True,num_layers=number_layer) output,(h_n,c_n) = lstm(input_embeded) print

LSTM在keras中的参数return_sequences和return_state

烂漫一生 提交于 2020-02-15 02:46:27
原文链接: https://blog.csdn.net/u011327333/article/details/78501054 Understand the Difference Between Return Sequences and Return States for LSTMs in Keras Kears LSTM API 中给出的两个参数描述 return_sequences :默认 False。在输出序列中,返回单个 hidden state值还是返回全部time step 的 hidden state值。 False 返回单个, true 返回全部。 return_state :默认 False。是否返回除输出之外的最后一个状态。 区别 cell state 和 hidden state LSTM 的网络结构中,直接根据当前 input 数据,得到的输出称为 hidden state。 还有一种数据是不仅仅依赖于当前输入数据,而是一种伴随整个网络过程中用来记忆,遗忘,选择并最终影响 hidden state 结果的东西,称为 cell state。 cell state 就是实现 long short memory 的关键。 如图所示, C 表示的就是 cell state。h 就是hidden state。(选的图不太好,h的颜色比较浅)。整个绿色的矩形方框就是一个

LSTM网络学习

假如想象 提交于 2020-02-08 18:31:34
循环神经网络(Recurrent Neural Networks) 人对一个问题的思考不会完全从头开始。比如你在阅读本片文章的时,你会根据之前理解过的信息来理解下面看到的文字。在理解当前文字的时候,你并不会忘记之前看过的文字,从头思考当前文字的含义。 传统的神经网络并不能做到这一点,这是在对这种序列信息(如语音)进行预测时的一个缺点。比如你想对电影中的每个片段去做事件分类,传统的神经网络是很难通过利用前面的事件信息来对后面事件进行分类。 而循环神经网络(下面简称RNNs)可以通过不停的将信息循环操作,保证信息持续存在,从而解决上述问题。RNNs如下图所示 1.png 可以看出A是一组神经网络(可以理解为一个网络的自循环),它的工作是不停的接收 并且输出 。从图中可以看出A允许将信息不停的再内部循环,这样使得它可以保证每一步的计算都保存以前的信息。 这样讲可能还是有点晕,更好的理解方式,也是很多文章的做法,将RNNs的自循环结构展开,像是将同一个网络复制并连成一条线的结构,将自身提取的信息传递给下一个继承者,如下图所示。 2.png 这种链式的结构揭示了RNNs与序列和列表类型的数据密切相关。好像他们生来就是为了处理序列类型数据的。 谁说不是呢!在过去的几年里,RNNs在语音识别、文字建模、翻译、字幕等领域有很成功的应用。在Andrej Karpathy写的博客 The

【深度学习基础】从零开始的炼丹生活09——循环神经网络

我只是一个虾纸丫 提交于 2020-02-08 01:24:03
往期回顾: 06——深度学习中的正则化 07——深度模型中的优化 08——卷积网络 为了处理一维序列数据,我们转向神经网络框架中另一强大的特化,循环神经网络。(主要参考《深度学习》和cousera上吴恩达的课程) 循环神经网络 (recurrent neural network)或 RNN ,是一类用于处理序列数据的神经网络。大多数循环网络都能处理可变长度的序列。循环网络强调参数共享,这使得模型能够扩展到不同形式的样本并进行泛化。例如 “我八点吃的早饭” 和 “我早饭在八点吃” ,要提取时间信息。如果我们训练一个前馈网络,需要分别学习句子每个位置的所有语言规则,而循环网络在几个时间步内共享相同的权重,不需要在每个位置都分别学习。 循环网络的计算图有两种表现方式,如图。左边循环图展开后就是右边展开图。 一、循环神经网络 RNN 的设计模式主要有以下几种: 每个时间步都有输出,并且隐藏单元之间有循环连接的循环网络。如图: 每个时间步产生一个输出,只有当前时刻的输出到下个时刻的隐藏单元之间有循环连接的循环网络。如图: 隐藏单元之间存在循环连接,读取整个序列后产生单个输出的循环网络,如图: 现在我们研究第一种情形的 RNN 前向传播公式。这种循环网络可以计算任何图灵可计算的函数。我们使用 tanh 作为激活函数,RNN 从特定的初始状态 h ( 0 ) \boldsymbol h^{(0)

RNN model predicting only one class?

心不动则不痛 提交于 2020-02-07 05:42:24
问题 I am trying to use GloVe embeddings to train a rnn model based on this article. I have a labeled data: text(tweets) on one column, labels on another (hate, offensive or neither). However the model seems to predict only one class in the result. This is the LSTM model: model = Sequential() hidden_layer = 3 gru_node = 32 # model embedding matrix here.... for i in range(0,hidden_layer): model.add(GRU(gru_node,return_sequences=True, recurrent_dropout=0.2)) model.add(Dropout(dropout)) model.add(GRU

How to model the data for sequence to sequence prediction with only one feature

左心房为你撑大大i 提交于 2020-02-07 05:22:16
问题 I have 9000 sequences each of length 200, only one feature. #data.shape= (9000,200,1) I want to predict the sequence of length 200 based on input sequence of length 190. X is input sequence of length 190, and Y is output sequence of length 200. X = np.delete(data,slice(50,60),1) # shape of X = (9000,190,1) Y = data.copy() # shape of Y = (9000,200,1) My question is based on the tutorial Encoder-Decoder Model for Sequence-to-Sequence Prediction and on existing stackoverflow question seq2seq

【论文翻译】Neural Architectures for Named Entity Recognition

痞子三分冷 提交于 2020-02-07 03:58:30
Abstract   处于领先水平的命名实体识别系统严重依赖于人工设计的特征与特定领域的知识,从而更高效地学习小型、带标记的语料库 。在这篇论文里我们介绍了两种神经结构——一种结构是基于双向LSTM与条件随机场,另一种结构是通过一种基于转换、Shift-Reduce解析的算法构造并标记了单词。我们的模型依赖于单词信息的两个来源:一是从带监督语料库中学习的基于单字的词表示,二是从无注释语料库中学习的非监督词表示。对于NER(命名实体识别),在使用四种语言且没有任何术语资源(比如Gazetteers,斯坦福开源的地名数据库)的前提下,我们的模型表现出了较好的性能。 1 Introduction   NER 是一个具有挑战性的学习问题。一方面,在大多数的语言和领域中可获取的监督训练数据都是很少的。另一方面,对于可以命名的单词种类限制很少,所以很难从这么小的数据集中泛化出好的模型。因此精心构造的词素特征和术语资源,比如Gazetteers(地名数据库),被广泛用于解决本次任务。不幸地是,在新语言与新领域的发展过程中术语资源与特征是很昂贵的,这给新语言与新领域的发展带来了挑战。利用无注释语料库进行的无监督学习提供了一个可替代策略,以便于即使学习的是小规模的监督数据集,也有较好的泛化能力。然而,甚至那些广泛依赖于无监督特征的系统(Collobert et al., 2011; Turian