TensorFlow——RNN模型

来源:互联网 发布:刚开淘宝店怎么刷信誉 编辑:程序博客网 时间:2024/06/05 06:13

本文介绍TensorFlow官方提供的关于循环神经网络的一个模板。该模型是Zaremba论文中的方法应用在语言模型的实现。首先介绍一下TensorFlow有关RNN的代码布局,其实能用到的RNN文件就两个rnn_cell.py和rnn.py,这两个文件需要导入from tensorflow.nn.rnn importrnn_cell,rnn,其实还有另一个地方保存着这两个文件——tensorflow.models.rnn,但是由于tensorflow的更新,官方提示为了满足后向兼容性,要从前面给的导入路径导入这些模块。有了这两个文件,首先创建rnn cell,包含

cell = rnn_cell.BasicRNNCell(inputs, state)#__init__(self, num_units, input_size=None, activation=tanh)cell = rnn_cell.BasicLSTMCell(num_units)  #最最基础的,不带peephole。__init__(self, num_units, forget_bias=1.0, input_size=None, state_is_tuple=False, activation=tanh)cell = rnn_cell.LSTMCell(num_units, input_size)  #可以设置peephole等属性。__init__(self, num_units, input_size=None,              #use_peepholes=False, cell_clip=None,               #initializer=None, num_proj=None, proj_clip=None,               #num_unit_shards=1, num_proj_shards=1,               #forget_bias=1.0, state_is_tuple=False,               #activation=tanh):cell = rnn_cell.GRUCell(num_units)#__init__(self, num_units, input_size=None, activation=tanh)


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)

0 0
原创粉丝点击