我检查了两个函数的源代码,似乎LSTM()通常生成LSTM网络,而LSTMCell()只返回一个单元格。
但是,在大多数情况下,人们只在他们的程序中使用一个LSTM Cell。这意味着当你只有一个LSTM Cell(例如简单的Seq2Seq)时,调用LSTMCell()和LSTM()会没有区别吗?
答案 0 :(得分:21)
LSTM
是经常性图层 LSTMCell
是一个对象(恰好也是一个图层)由LSTM图层使用,包含一步的计算逻辑。重复图层包含一个单元格对象。单元格包含用于计算每个步骤的核心代码,而循环层命令单元格并执行实际的循环计算。
通常,人们会在代码中使用LSTM
个图层
或者他们使用包含RNN
的{{1}}个图层。
两件事情几乎相同。 LSTMCell
图层是使用LSTM
的{{1}}图层,您可以在source code中查看。
关于细胞数量:
看来,由于其名称,RNN
是一个单一的单元格,它实际上是一个管理所有单元/单元的对象,正如我们想象的那样。在提到的相同代码中,您可以看到在创建LSTMCell
的实例时使用了LSTMCell
参数。