标签: recurrent-neural-network

如何准备用于语音识别的数据集

我需要训练一个双向LSTM模型以识别离散语音(单个数字从0到9),我已经录制了100个扬声器的语音。接下来我该怎么办?(假设我将它们分成单个的.wav文件,每个文件包含一个数字)我将使用mfcc作为网络功能。

此外,如果我要使用支持CTC(连接主义者时间分类)的库,我想知道数据集的差异。

speech-recognition unsupervised-learning recurrent-neural-network

5
推荐指数
1
解决办法
2961
查看次数

如何从特征向量或单词生成句子?

我使用VGG 16-Layer Caffe模型用于图像标题,每张图像都有几个标题.现在,我想从这些标题(单词)中生成一个句子.
我在一篇关于LSTM的论文中读到,我应该从训练网络中删除SoftMax层,并将4096特征向量从fc7层直接提供给LSTM.
我是LSTM和RNN的新手.
我应该从哪里开始?是否有任何教程展示如何通过序列标记生成句子?

word2vec deep-learning caffe lstm recurrent-neural-network

5
推荐指数
1
解决办法
737
查看次数

使用TensorFlow进行端到端语音识别的RNN

我还没有成功使用TensorFlow训练RNN进行语音到文本的问题。我已决定使用纯FFT(即频谱图)作为训练数据来重现Alex Graves和Navdeep Jaitley,2014年所述方法的结果,并编码每个具有300个LSTM单位的3层双向RNN。我想描述从预处理音频信号到解码logit所遵循的步骤。

预处理:

  1. 使用了来自matplotlib.mlab的频谱图函数将时域中的每个音频信号分割为20ms的帧,NFFT =(fs / 1000 * 20个样本)长度,并执行窗口加FFT并重叠7ms。

  2. 我最初尝试计算功率谱ps |fft|^2和dB by 10 * log10(ps),但是TensorFlow CTC损失函数会产生nan值,并且进一步,优化器显然将所有参数更新为nan,因此我不再继续使用它。

  3. 值得一提的是,频谱图未规范化,因为它仅出于某种原因使TensorFlow产生nan值。请有人说明为什么会这样。我有一种感觉,梯度正在消失。关于要使用的初始化范围的任何建议?

  4. 由于不同的音频文件的长度各不相同,因此我用max_time填充了每个批次的帧,因为这需要形成mini-batchshape [max_time,batch,NFFT]

  5. 由于所有目标转录均以大写字母表示,因此我仅将AZ,空格和一些标点符号包括在类别列表中(总共32个),这些类别用于将字符串目标转录转换为SparseTensor。

RNN配置:

  1. 前向和后向单元,每个LSTM单元使用窥孔架构在每层中具有300个单元,并且忘记将偏差初始设置为0才能查看性能。

  2. 将project_size设置为的双向动态RNN hidden_size 500

  3. 序列长度张量为每个数据分批分配了最大时间长度的值。

  4. 由于tf.nn.bidirectional_dynamic_rnn不包括输出层sigmoid or softmax,因此我将在其外部执行线性回归,其权重将为shape = [hidden_size,n_chars]

  5. 我使用了损失函数tf.nn.ctc_loss,该函数最初返回650或700之类的巨大值,并在几百个历元后向下滑动到最大值500。

  6. 最后,使用CTC波束搜索解码器从输出softmax or sigmoid层生成的对数中找到最佳路径。

现在,我不明白我要去哪里错了,但我只是没有得到想要的转录(即权重未收敛以产生目标结果)。我要求某人说明原因。我曾尝试用100个音频片段过度拟合网络,但没有用。预测的结果远不及所需的转录。

感谢您的时间和支持。

speech-recognition speech-to-text lstm tensorflow recurrent-neural-network

5
推荐指数
1
解决办法
4357
查看次数

如何在TensorFlow中重用RNN

我想实现像DSSM(Deep Semantic Similarity Model)这样的模型.

我想训练一个RNN模型并使用该模型获得三个不同输入的三个隐藏向量,并使用这些隐藏向量来计算损失函数.

我尝试使用reuse = None在变量范围内进行编码,如:

gru_cell = tf.nn.rnn_cell.GRUCell(size)
gru_cell = tf.nn.rnn_cell.DropoutWrapper(gru_cell,output_keep_prob=0.5)
cell = tf.nn.rnn_cell.MultiRNNCell([gru_cell] * 2, state_is_tuple=True)

embedding = tf.get_variable("embedding", [vocab_size, wordvec_size])
inputs = tf.nn.embedding_lookup(embedding, self._input_data)
inputs = tf.nn.dropout(inputs, 0.5)
with tf.variable_scope("rnn"):
    _, self._states_2 = rnn_states_2[config.num_layers-1] = tf.nn.dynamic_rnn(cell, inputs, sequence_length=self.lengths, dtype=tf.float32)
    self._states_1 = rnn_states_1[config.num_layers-1]
with tf.variable_scope("rnn", reuse=True):
    _, rnn_states_2 = tf.nn.dynamic_rnn(cell,inputs,sequence_length=self.lengths,dtype=tf.float32)
    self._states_2 = rnn_states_2[config.num_layers-1]
Run Code Online (Sandbox Code Playgroud)

我使用相同的输入并重用RNN模型,但是当我打印'self_states_1'和'self_states_2'时,这两个向量是不同的.

with tf.variable_scope("rnn", reuse=True):用来计算'rnn_states_2',因为我想使用与'rnn_states_1'相同的RNN模型.

但为什么我得到具有相同输入和相同模型的不同隐藏向量?

我哪里做错了?

谢谢你的回答.

更新:我发现原因可能是'tf.nn.rnn_cell.DropoutWrapper',当我删除drop out包装器时,隐藏的向量是相同的,当我添加drop out包装器时,这些向量变得不同.

所以,新的问题是:

如何修复被"退出"的矢量部分?通过设置'seed'参数?

在培训DSSM时,我应该修复辍学行为吗?

python tensorflow recurrent-neural-network

5
推荐指数
1
解决办法
943
查看次数

使用张量流预测句子的概率

我正在使用这种预训练的张量流模型,并试图获得一个句子的概率。我的主要任务是,从几句话中找出概率最大的句子。

使用此代码,我可以预测下一个单词。

bazel-bin/lm_1b/lm_1b_eval --mode sample \
                           --prefix "I love that I" \
                           --pbtxt data/graph-2016-09-10.pbtxt \
                           --vocab_file data/vocab-2016-09-10.txt  \
                           --ckpt 'data/ckpt-*'
Run Code Online (Sandbox Code Playgroud)

但是,如何从许多句子列表中得出句子的概率呢?

python-2.7 language-model tensorflow recurrent-neural-network

5
推荐指数
0
解决办法
335
查看次数

具有多个功能的RNN的数据形状/格式

我正在尝试使用python/keras构建一个RNN.我理解如何使用一个功能(t + 1作为输出),但是如何使用多个功能?

如果我有一个回归问题和一个具有一些不同特征的数据集,一个预期输出,并且我希望将时间步长/窗口设置为30(如果每个步骤代表一天,那么一个月)怎么办?数据是?在这个例子中,我希望能够预测未来的输出n个时间段.

请参阅下面的示例,了解此数据的外观:

在此输入图像描述

我很难直观地了解RNN数据所需的最佳形状/格式.

此外,RNN如何处理数据集,例如500个功能和几千条记录?

希望有人可以帮助回答或指出我正确的方向得到一个 - 到目前为止,我已发布在Reddit和Cross验证没有运气:(

如果首选代码数据示例:

# random df
df = pd.DataFrame({'date': np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]),
                   'feature_1': np.random.randint(10, size=10),
                   'feature_2': np.random.randint(10, size=10),
                   'feature_3': np.random.randint(10, size=10),
                   'feature_4': np.random.randint(10, size=10),
                   'output': np.random.randint(10, size=10)}
                 )

# set date as index
df.index = df.date
df = df.drop('date', 1)
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network keras recurrent-neural-network

5
推荐指数
1
解决办法
1432
查看次数

Keras的Hopfield网络

是否可以通过Keras甚至TensorFlow实现Hopfield网络?喜欢的东西newhopMATLAB

keras tensorflow recurrent-neural-network

5
推荐指数
1
解决办法
2525
查看次数

卷积神经网络中隐藏层的丢失率指导

我目前正在构建一个卷积神经网络来玩2048游戏。它具有卷积层,然后有6个隐藏层。在线所有指南均提到〜50%的辍学率。我将要开始训练,但担心6层中的每层50%的辍学率有些过大,并且会导致拟合不足。

我将非常感谢对此的一些指导。你们推荐什么作为辍学的起点?我也很想了解您为什么推荐您的工作。

machine-learning convolution neural-network conv-neural-network recurrent-neural-network

5
推荐指数
1
解决办法
3200
查看次数

PyTorch GRU返回中处于隐藏状态的层顺序

这是我正在查看的API,https://pytorch.org/docs/stable/nn.html#gru

它输出:

  1. output 形状(seq_len,批处理,num_directions * hidden_​​size)
  2. h_n 形状(num_layers * num_directions,批处理,hidden_​​size)

对于具有多个层的GRU,我想知道如何获取最后一层的隐藏状态,应该是h_n[0]还是h_n[-1]

如果是双向的,该如何切片以获取两个方向上GRU的最后一个隐藏层状态?

deep-learning recurrent-neural-network gated-recurrent-unit pytorch tensor

5
推荐指数
1
解决办法
674
查看次数

用PyTorch预测网格坐标的顺序

在交叉验证中有一个类似的开放问题(尽管不是针对实现的,我希望这个问题能够解决,所以我认为它们都是有效的)。

我正在一个使用传感器监视人员GPS位置的项目。然后,坐标将转换为简单网格表示。我想尝试做的是记录用户的路线后,训练神经网络来预测下一个坐标,即采取下面的示例,其中用户重复只有两个随着时间的推移路线,首页- >一个首页- >乙

我想用不同长度的序列训练RNN / LSTM,例如(14,3), (13,3), (12,3), (11,3), (10,3), (9,3), (8,3), (7,3), (6,3), (5,3), (4,3), (3,3), (2,3), (1,3),然后我还想用不同长度的序列进行预测,例如对于这个示例路线

route = [(14,3), (13,3), (12,3), (11,3), (10,3)] //pseudocode
pred = model.predict(route)
Run Code Online (Sandbox Code Playgroud)

pred应该给我(9,3)(或者最好是更长的预测,例如((9,3), (8,3), (7,3), (6,3), (5,3), (4,3), (3,3), (2,3), (1,3)

如何将此类训练序列提供给下面标识的initforward操作?

self.rnn = nn.RNN(input_size, hidden_dim, n_layers, batch_first=True)
out, hidden = self.rnn(x, hidden)
Run Code Online (Sandbox Code Playgroud)

另外,整个路径应该是张量,还是路径内的每个坐标集都应该是张量?

在此处输入图片说明

machine-learning deep-learning lstm recurrent-neural-network pytorch

5
推荐指数
1
解决办法
206
查看次数