2017-09-15 31 views
1

在tensorflow中,有一个叫做BasicLSTMCell的lstm实现,它位于tf.contrib.rnn.BasicLSTMCell。它有一个参数num_units,这意味着LSTM单元中的单元数量。但我不知道这意味着什么。tf.contrib.rnn.BasicLSTMCell是单个LSTM单元还是LSTM层?

如果我这样定义一个LSTM细胞:

lstm_cell = tf.contrib.rnn.BasicLSTMCell(512). 

什么是lstm_cell样子?它是一个512节点的lstm节点或lstm层?谁可以告诉我这个?

回答

2

它是一个具有512个单位的LSTM层。

BasicLSTMCell实施抽象类RNNCell。从文档:

表示RNN单元的抽象对象。

每个RNNCell必须具有以下属性并实施call,其签名(output, next_state) = call(input, state)

[...]

细胞的这种定义不同于在文献中使用的定义。在文献中,“单元格”是指具有单个标量输出的对象。 该定义涉及这样的单位的水平阵列

与展开的反向传播槽时一起创建LSTM层的一种常见方法是以下之一:

lstm_cell = tf.contrib.rnn.BasicLSTMCell(512) 
outputs, final_state = tf.nn.static_rnn(cell=lstm_cell, 
          dtype=tf.float32, 
          inputs=some_input_sequence) 

其中:

  • some_input_sequencenum_steps张量清单尺寸为[batch_size, input_size]
  • outputs将包含每层之后的层的输出some_input_sequence的元素。因此,它又是一个num _steps元素大小为[batch_size, 512](其中512是您的单元的单元数)的列表
  • final_state将包含处理完整个序列之后的状态。特别是,对于LSTM,它是一个具有两个元素的命名元组,ch(LSTM的两个状态)。