提问者:小点点

如何清楚地解释Keras中单位参数的含义?


我想知道LSTM在Keras是如何工作的。例如,在本教程中,与其他许多教程一样,您可以找到如下内容:

model.add(LSTM(4, input_shape=(1, look_back)))

“4”是什么意思。这是层中神经元的数量。我所说的神经元,是指每一个实例都有一个输出的东西?

事实上,我发现这是一次精彩的讨论,但并没有被参考文献中提到的解释所说服。

在该方案中,可以看到图中所示的num_单元,我认为我说的每个单元都是一个非常原子的LSTM单元(即4个门)并没有错。但是,这些单元是如何连接的?如果我是对的(但不确定),x_(t-1)的大小是nb_特征,因此每个特征都是一个单位的输入,num_单位必须等于nb_特征对吗?

现在,让我们谈谈Keras。我已经读了这篇文章和公认的答案,并得到麻烦。事实上,答案是:

基本上,形状类似(批次大小、时间跨度、输入尺寸),其中input\u dim可以不同于单元

在那种情况下?我对以前的参考资料有困难。。。

此外,它说,

Keras中的LSTM仅定义一个LSTM区块,其单元为单位长度。

好的,但如何定义完整的LSTM层?是不是input\u-shape隐式创建了与时间步数一样多的块(根据我的说法,这是我的代码中input\u-shape参数的第一个参数)?

谢谢你点亮我

编辑:对于有状态的LSTM模型,是否也可以清楚地详细说明如何重塑数据,例如大小(n_样本,n_特征)?如何处理时间步长和批量大小?


共3个答案

匿名用户

首先,LSTM中的单元不是time_steps的数量。

每个LSTM单元(在给定的时间步长出现)接受输入x,并形成一个隐藏状态向量a,该隐藏单位向量的长度就是LSTM(Keras)中的单位。

您应该记住,代码只创建了一个RNN单元

keras.layers.LSTM(units, activation='tanh', …… )

和RNN操作由类本身按Tx次数重复。

我用一个非常简单的代码链接了这个来帮助你更好地理解它。

匿名用户

你可以(有点)把它想象成完全连接的层。单位是神经元。

输出的维度是神经元的数量,就像大多数已知的层类型一样。

不同之处在于,在LSTM中,这些神经元不会完全相互独立,它们会由于隐藏在隐蔽处的数学运算而相互通信。

在进一步讨论之前,可能有兴趣了解一下关于LSTM、其输入/输出以及stative=true/false的用法的完整解释:了解Keras LSTM。请注意,您的输入形状应该是input\u shape=(look\u back,1)。输入形状为(时间步长、特征)

  • 隐藏层1:4个单位

其中input\u shape=(批量大小,任意步骤,3)

每个LSTM层将不断重复使用相同的单元/神经元,直到处理输入中的所有任意时间步。

  • 输出将具有形状:
    • (批次,arbitrary_steps,单位)ifreturn_sequences=True.
    • (批次,单位)ifreturn_sequences=False.

    确切地说,将有两组单元,一组处理原始输入,另一组处理来自最后一步的已处理输入。由于内部结构,每个组将有一个比单位数大4倍的参数(这个4与图像无关,它是固定的)。

    流量:

    • 接受具有n个步骤和3个功能的输入
    • 第1层:
      • 对于输入中的每个时间步:
        • 在输入上使用4个单位以获得4号结果
        • 对上一步的输出使用4个循环单位
        • 输出特性=4
        • 与第1层相同
        • 对于输入中的每个时间步:
          • 在输入端使用1个单位获得大小为1的结果
          • 在上一步的输出上使用1个单位

匿名用户

单位数是LSTM内部向量状态的大小(长度),hc。也就是说,无论输入的形状如何,它都会被ifo门的各种内核放大(通过密集变换)。链接文章中详细介绍了如何将生成的潜在特征转化为hc。在您的示例中,数据的输入形状

(batch_size, timesteps, input_dim)

将转化为

(batch_size, timesteps, 4)

如果return\u sequences为true,否则只会执行最后一个h,使其成为(批量大小,4)。我建议使用更高的潜在维度,对于大多数问题可能是128或256。