tensrflow lstm

来源:互联网 发布:香港域名注册有限公司 编辑:程序博客网 时间:2024/06/05 04:18
tf.nn.rnn_cell.LSTMCell.__init__(num_units, input_size=None, use_peepholes=False, cell_clip=None, initializer=None, num_proj=None, num_unit_shards=1, num_proj_shards=1, forget_bias=1.0, state_is_tuple=False, activation=tanh)


  • num_units: cell输出的维数(一个lstm的一个单元称为cell)
  • state_is_tuple: 设置为true的话,返回(c_state, m_state), false的话不知道返回啥
  • 官网上说 不赞成使用inputsize这个参数,
  • 函数的输出是一个cell

tf.nn.rnn_cell.DropoutWrapper.__init__(cell, input_keep_prob=1.0, output_keep_prob=1.0, seed=None)

  • cell:就用上面代码返回的cell
  • input_keep_prob / output_keep_prob :保留连接的比例
  • 使用此函数可以使cell 后面接一个dropout
  • 函数输出 后接dropout的cell

tf.nn.rnn_cell.MultiRNNCell.__init__(cells, state_is_tuple=False)

  • 此函数用来搭建 多层的lstm网络
  • cells: 一般用 [cell]*n.   n为你想搭的层数
  • state_is_tuple: 同上
  • 叠lstm的层数
  • 返回的也是cell(大的)

tf.nn.dynamic_rnn(cell, inputs, sequence_length=None, initial_state=None, dtype=None, parallel_iterations=None, swap_memory=False, time_major=False, scope=None)

  • cell:搭好的网络, 即上个函数的返回值(是cell就可以)
  • inputs:The RNN inputs.If time_major == False (default), this must be a tensor of shape:[batch_size, max_time, input_size].If time_major == True, this must be a tensor of shape:[max_time, batch_size, input_size].  batch_size: ....max_time指的是: 输入句子中单词的最大数量。input_size:每个单词向量的长度
  • 网络是通过 max_time 的值进行按时间展开的。 max_time是 最长句子中单词的个数。
  • sequence_size: 是一个向量:向量的每个值代表每个batch的 output的个数(假设batch1,有6个单词, 而max_time是10, 就可以将sequence_size[batch1]=6)
  • 即:每个batch的句子中单词的数量(句子的长度)
  • 一个batch代表一个句子
  • 函数输出:outputs:维数[batch_size, max_time, cell.output_size] ,
  • 函数输出:state是每行最后一个state的集合(tensor), 假设n层 (n, cell.output_size)

参考 :点击打开链接

1 1
原创粉丝点击