本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

【j2开奖】教程 | 如何使用TensorFlow构建、训练和改进循环神经网络(3)

时间:2017-03-26 03:15来源:天下彩论坛 作者:本港台直播 点击:
对于这个 RNN 例子来说,我们在每个窗口使用前后各 9 个时间点——共 19 个时间点。有 26 个倒谱系数,在 25 毫秒的时间里共 494 个数据点。根据数据采样

对于这个 RNN 例子来说,我们在每个窗口使用前后各 9 个时间点——共 19 个时间点。有 26 个倒谱系数,在 25 毫秒的时间里共 494 个数据点。根据数据采样率,我们建议在 16,000 Hz 上有 26 个倒谱特征,在 8,000 Hz 上有 13 个倒谱特征。以下是一个 8,000 Hz 数据的加载窗口:

【j2开奖】教程 | 如何使用TensorFlow构建、训练和改进循环神经网络

如果你希望了解更多有关转换数字音频用于 RNN 语音识别的方法,可以看看 Adam Geitgey 的介绍:

对语音的序列本质建模

长短期记忆(LSTM)是循环神经网络(RNN)的一种,它适用于对依赖长期顺序的数据进行建模。它对于时间序列数据的建模非常重要,因为这种方法可以在当前时间点保持过去信息的记忆,从而善输出结果,所以,这种特性对于语音识别非常有用。如果你想了解在 TensorFlow 中如何实例化 LSTM 单元,以下是受 DeepSpeech 启发的双向循环神经网络(BiRNN)的 LSTM 层示例代码:

  with tf.name_scope('lstm'):

  # Forward direction cell:

  lstm_fw_cell =tf.contrib.rnn.BasicLSTMCell(n_cell_dim, forget_bias=1.0, state_is_tuple=True)

  # Backward direction cell:

  lstm_bw_cell =tf.contrib.rnn.BasicLSTMCell(n_cell_dim, forget_bias=1.0, state_is_tuple=True)

  # Now we feed `layer_3` into the LSTM BRNN cell and obtain the LSTM BRNN output.

  outputs, output_states =tf.nn.bidirectional_dynamic_rnn(

  cell_fw=lstm_fw_cell,

  cell_bw=lstm_bw_cell,

  # Input is the previous Fully Connected Layer before the LSTM

  inputs=layer_3,

  dtype=tf.float32,

  time_major=True,

  sequence_length=seq_length)

  tf.summary.histogram("activations", outputs)

关于 LSTM 网络的更多细节,可以参阅 RNN 与 LSTM 单元运行细节的概述:

此外,还有一些工作探究了 RNN 以外的其他语音识别方式,如比 RNN 计算效率更高的卷积层:https://arxiv.org/abs/1701.02720

训练和监测网络

因为示例中的网络是使用 TensorFlow 训练的,我们可以使用 TensorBoard 的可视化计算图监视训练、验证和进行性能测试。在 2017 TensorFlow Dev Summit 上 Dandelion Mane 给出了一些有用的帮助:https://www.youtube.com/watch?v=eBbEDRsCmv4

我们利用 tf.name_scope 添加节点和层名称,并将摘要写入文件,其结果是自动生成的、可理解的计算图,正如下面的双向神经网络(BiRNN)所示。数据从左下角到右上角在不同的操作之间传递。为了清楚起见,不同的节点可以用命名空间进行标记和着色。在这个例子中,蓝绿色 fc 框对应于完全连接的层,绿色 b 和 h 框分别对应于偏差和权重。

【j2开奖】教程 | 如何使用TensorFlow构建、训练和改进循环神经网络

我们利用 TensorFlow 提供的 tf.train.AdamOptimizer 来控制学习速度。AdamOptimizer 通过使用动量(参数的移动平均数)来善传统梯度下降,促进超参数动态调整。我们可以通过创建标签错误率的摘要标量来跟踪丢失和错误率:

  # Create a placeholder for the summary statistics

  with tf.name_scope("accuracy"):

  # Compute the edit (Levenshtein) distance of the top path

  distance =tf.edit_distance(tf.cast(self.decoded[0], tf.int32), self.targets)

  # Compute the label error rate (accuracy)

  self.ler =tf.reduce_mean(distance, name='label_error_rate')

  self.ler_placeholder =tf.placeholder(dtype=tf.float32, shape=[])

(责任编辑:本港台直播)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容