我已经检查了两个函数的源代码,似乎LSTM()总体上构成了LSTM网络,而LSTMCell()仅返回一个单元格。

但是,在大多数情况下,人们在程序中仅使用一个LSTM单元。这是否意味着当您只有一个LSTM单元(例如简单的Seq2Seq)时,调用LSTMCell()和LSTM()不会有什么区别?

最佳答案

  • LSTM循环图层
  • LSTMCell是LSTM层使用的对象(也恰好也是一个层),其中包含一步的计算逻辑。

  • 循环图层包含一个单元格对象。该单元包含用于每个步骤的计算的核心代码,而循环层命令该单元并执行实际的循环计算。

    通常,人们在其代码中使用LSTM层。
    或者他们使用包含RNNLSTMCell图层。

    两者几乎相同。 LSTM层是使用RNNLSTMCell层,您可以在source code中 checkout 。

    关于单元格的数量:

    Alghout似乎由于其名称而已,LSTMCell是单个单元格,实际上它是一个对象,它可以管理我们可能认为的所有单位/单元格。在提到的同一代码中,您可以看到在创建units实例时使用了LSTMCell参数。

    关于machine-learning - LSTM()和LSTMCell()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48187283/

    10-12 18:29