【问题标题】:What to set in axis parameter of BatchNormalization layer for time series data?在 BatchNormalization 层的轴参数中为时间序列数据设置什么?
【发布时间】:2019-05-26 13:17:11
【问题描述】:

我正在用时间序列数据训练 LSTM 网络,并希望对数据进行归一化,因为我的特征具有不同的规模。

我的数据形状是

(n_samples x n_timestamps x n_features)

我想使用BatchNormalization layer

我应该将 axis 设置为 2(功能,如文档中所述)还是 1(时间戳)?我希望我的特征进入 [0..1] 范围,而它们的规模非常不同。

问题是文档没有说明这一层实际上做了什么,而是为 CNN 提供了建议。

【问题讨论】:

    标签: keras neural-network lstm batch-normalization


    【解决方案1】:

    通常,您会使用特征维度:-1。

    它将单独处理每个特征,并根据其他所有维度进行标准化。 但它不会使它们进入 0 到 1 的范围。它将使用 (x - mean)/variance 并在标准化后应用比例因子和偏差。

    例如。取特征 0:

    • 查看批次中所有样本和所有时间步长的特征 0 值
    • 获取所有这些值的均值和方差
    • 计算所有样本和步骤的归一化特征零值
    • 为特征 0 应用比例因子
    • 为特征 0 应用偏差

    对特征 1 重复相同的操作,使用另一个均值、另一个方差、尺度和偏差。

    如果您使用 timesteps 维度,它将单独查看每个步骤并为每个步骤提供一个比例因子,这没有多大意义,因为步骤应该具有相似的性质,与可能意味着完全不同的事物的特征不同。

    如果您确实需要介于 0 和 1 之间的内容,您只需申请 Activatoin('sigmoid')。如果您担心您的值会过于饱和,您可以申请BatchNormalization(),然后申请Activatoin('sigmoid')

    【讨论】:

      猜你喜欢
      • 2023-03-12
      • 1970-01-01
      • 2017-07-20
      • 2012-12-11
      • 2014-10-26
      • 2021-09-09
      • 2022-12-22
      • 2016-04-02
      • 1970-01-01
      相关资源
      最近更新 更多