我已经检查了两个函数的源代码,似乎LSTM()总体上构成了LSTM网络,而LSTMCell()仅返回一个单元格。
但是,在大多数情况下,人们在程序中仅使用一个LSTM单元。这是否意味着当您只有一个LSTM单元(例如简单的Seq2Seq)时,调用LSTMCell()和LSTM()不会有什么区别?
最佳答案
LSTM
是循环图层 LSTMCell
是LSTM层使用的对象(也恰好也是一个层),其中包含一步的计算逻辑。 循环图层包含一个单元格对象。该单元包含用于每个步骤的计算的核心代码,而循环层命令该单元并执行实际的循环计算。
通常,人们在其代码中使用
LSTM
层。或者他们使用包含
RNN
的LSTMCell
图层。两者几乎相同。
LSTM
层是使用RNN
的LSTMCell
层,您可以在source code中 checkout 。关于单元格的数量:
Alghout似乎由于其名称而已,
LSTMCell
是单个单元格,实际上它是一个对象,它可以管理我们可能认为的所有单位/单元格。在提到的同一代码中,您可以看到在创建units
实例时使用了LSTMCell
参数。关于machine-learning - LSTM()和LSTMCell()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48187283/