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