本文介绍TensorFlow官方提供的关于循环神经网络的一个模板。该模型是Zaremba论文中的方法应用在语言模型的实现。首先介绍一下TensorFlow有关RNN的代码布局,其实能用到的RNN文件就两个rnn_cell.py和rnn.py,这两个文件需要导入from tensorflow.nn.rnn importrnn_cell,rnn
,其实还有另一个地方保存着这两个文件——tensorflow.models.rnn
,但是由于tensorflow的更新,官方提示为了满足后向兼容性,要从前面给的导入路径导入这些模块。有了这两个文件,首先创建rnn cell,包含
lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(size, forget_bias=0.0) if is_training and config.keep_prob < 1: # 在训练以及为输出的保留几率小于1时 # 这里这个dropoutwrapper其实是为每一个lstm cell的输入以及输出加入了dropout机制 lstm_cell = tf.nn.rnn_cell.DropoutWrapper( lstm_cell, output_keep_prob=config.keep_prob) # 这里的cell其实就是一个多层的结构了。它把每一曾的lstm cell连在了一起得到多层 # 的RNN cell = tf.nn.rnn_cell.MultiRNNCell([lstm_cell] * config.num_layers) # 根据论文地4页章节4.1,隐匿层的初始值是设为0 self._initial_state = cell.zero_state(batch_size, tf.float32)
新闻热点
疑难解答