当 LSTM 层的输入数量大于或小于该层中 LSTM 单元的数量时,Keras 会做什么?

What does Keras do when the number of inputs to an LSTM layer is greater than or less than the number of LSTM cells in that layer?

请参阅下面的 python 代码,我在我认为需要强调信息的代码中添加了注释。

import keras
import numpy

def build_model():
    model = keras.models.Sequential()
    model.add(keras.layers.LSTM(3, input_shape = (3, 1), activation = 'elu'))# Number of LSTM cells in this layer = 3.
    return model

def build_data():
    inputs = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    outputs = [10, 11, 12, 13, 14, 15, 16, 17, 18]
    inputs = numpy.array(inputs)
    outputs = numpy.array(outputs)
    inputs = inputs.reshape(3, 3, 1)# Number of samples = 3, Number of input vectors in each sample  = 3, size of each input vector = 3.
    outputs = outputs.reshape(3, 3)# Number of target samples = 3, Number of outputs per target sample = 3.
    return inputs, outputs

def train():
    model = build_model()
    model.summary()
    model.compile(optimizer= 'adam', loss='mean_absolute_error', metrics=['accuracy'])
    x, y = build_data()
    model.fit(x, y, batch_size = 1, epochs = 4000)
    model.save("LSTM_testModel")

def apply():
    model = keras.models.load_model("LSTM_testModel")
    input = [[[7], [8], [9]]]
    input = numpy.array(input)
    print(model.predict(input))

def main():
    train()

main()

我的理解是每个输入样本有 3 个输入向量。每个输入向量进入一个 LSTM 单元。即对于样本 1,输入向量 1 进入 LSTM 单元 1,输入向量 2 进入 LSTM 单元 2,依此类推。

查看互联网上的教程,我发现 LSTM 单元的数量远大于输入向量的数量,例如300 个 LSTM 单元。

比如说我每个样本有 3 个输入向量什么输入进入剩余的 297 个 LSTM 单元?

我尝试将模型编译为具有 2 个 LSTM 单元并且它仍然接受每个样本的 3 个输入向量,尽管我必须更改训练数据中的目标输出以适应这个(更改维度)。那么每个样本的第三个输入向量发生了什么...被忽略了吗?

我相信上图显示每个输入向量(任意场景的)都映射到特定的 RNN 单元。我可能误解了它。上图摘自以下URL:http://karpathy.github.io/2015/05/21/rnn-effectiveness/

我将尝试回答您的一些问题,然后整合评论中提供的信息以确保完整性,为您 带来好处 以及 Community.

正如Matias在评论中提到的,无论Number of Inputs是否大于或小于Number of Units/Neurons,都会像Fully Connected Network一样连接,如下图.

要了解 RNN/LSTM 的内部工作原理,假设我们有

输入特征数 => 3 => F1、F2 和 F3

时间步数 => 2 => 0 和 1

隐藏层数 => 1

每个隐藏层中的神经元数 => 5

那么里面实际发生的事情可以用下面的截图来表示:

您还询问过分配给 LSTM 单元格的单词。不确定您指的是哪个 link 以及它是否正确,但简单来说(此屏幕截图中的单词实际上将被嵌入向量替换),您可以理解 LSTM 如何将文本处理为如下图所示:

更多内容请参考 and 的精彩解说。

希望这对您有所帮助。快乐学习!