代码之家  ›  专栏  ›  技术社区  ›  MysteryGuy

如何清晰地解释Keras中units参数的含义?

  •  7
  • MysteryGuy  · 技术社区  · 8 年前

    我想知道LSTM在喀拉斯是如何工作的。在 this tutorial 例如,和其他许多例子一样,您可以找到如下内容:

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

    “4”是什么意思。是这层神经元的数目吗。说到神经元,我的意思是每一个例子都有一个输出?

    实际上,我发现 this brillant discussion 但并没有被 the reference given .

    num_units 举例来说,我认为我没有错的说,这一个单元是一个非常原子的LSTM单元(即4个门)。然而, 这些单元是如何连接的 x_(t-1) 大小 nb_features ,因此每个特征都是一个单元的输入 num_unit 必须等于 nb U特征 正确的?

    现在,我们来谈谈凯拉斯。我读过 this post and the accepted answer 找麻烦。事实上,答案是:

    基本上,形状类似于(批量大小、时间跨度、输入维度),其中 input_dim 可能不同于 unit

    哪种情况?我对以前的推荐信有意见。。。

    此外,它还说,

    路缘石中的LSTM仅定义一个LSTM块,其单元为单位长度

    好的,但是如何定义一个完整的LSTM层呢?是不是 input_shape 它隐式地创建与 time_steps (据我所知,这是 输入形状

    谢谢你点灯给我

    编辑:是否也可以清楚地详细说明如何重塑数据的大小 (n_samples, n_features)

    2 回复  |  直到 8 年前
        1
  •  4
  •   Daniel Möller    8 年前

    你可以(某种程度上)完全按照你对完全连接层的想法来考虑它。单位是神经元。

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

    在进一步讨论之前,可能有兴趣看一下关于LSTMs、其输入/输出以及stative=true/false的用法的完整解释: Understanding Keras LSTMs . 注意,您的输入形状应该是 input_shape=(look_back, 1) . 输入形状用于 (time_steps, features)

    虽然这是一系列完全连接的层:

    • 4个单元
    • 隐藏层2: 4个单元
    • 输出层: 1台 fully connected layers

    在哪里? input_shape = (batch_size, arbitrary_steps, 3)

    enter image description here

    • 输出将具有形状:
      • (batch, arbitrary_steps, units) 如果 return_sequences=True
      • (batch, units) 如果 return_sequences=False .
    • 内存状态的大小为 units .
    • 单位 .

    流量:

    • 输入n个步骤和3个特性
    • 第1层:
      • 对于输入中的每个时间步骤:
        • 在上一步的输出上使用4个循环单位
      • 输出最后一个( )或全部( return_sequences = True )台阶
        • 输出特性=4
      • 与第1层相同
    • 第三层:
      • 对于输入中的每个时间步骤:
        • 在上一步的输出上使用1个单位
      • 输出最后一个( return_sequences=假 )或全部( )台阶
        2
  •  2
  •   modesitt    8 年前

    单位数是内部向量状态的大小(长度), h 和 c 的 LSTM . 也就是说,无论输入的形状如何,它都是由不同的内核为 i , f ,和 o 小时 和 在链接的帖子中描述。在您的示例中,数据的输入形状

    (batch_size, timesteps, input_dim)
    

    将转换为

    (batch_size, timesteps, 4)
    

    如果 return_sequences 是真的,否则只有最后一个 小时 会被艾美奖的 (batch_size, 4) . 我建议使用更高的潜在维度,对于大多数问题,可能是128或256。

        3
  •  0
  •   pkumar90    6 年前

    我会这样说-有4个LSTM“神经元”或“单位”,每个有1个细胞状态和1个隐藏状态的每一个时间段,他们处理。因此,对于1个时间步处理的输入,您将拥有4个单元格状态、4个隐藏状态和4个输出。

    实际上正确的说法是-对于一个时间步长的输入,你有一个单元格状态(一个大小为4的向量)和一个隐藏状态(一个大小为4的向量)和一个输出(一个大小为4的向量)。

    因此,如果你输入一个20步的时间序列,你将有20个(中间)单元格状态,每个状态的大小为4。这是因为LSTM中的输入是按顺序处理的,一个接一个。同样的,你将有20个隐藏状态,每个大小4。

    如果将return_states设置为TRUE,则会得到size=4的最后一个隐藏状态和size 4的最后一个单元格状态。