keras - 时间序列数据的 BatchNormalization 层的 axis 参数设置什么?

标签 keras neural-network lstm batch-normalization

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

我的数据形状是

(n_samples x n_timestamps x n_features)

我想使用BatchNormalization layer .

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

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

最佳答案

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

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

例如。取特征0:

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

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

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

如果您确实需要 0 到 1 之间的值,则只需应用 Activatoin('sigmoid') 即可。如果您担心值会过于饱和,可以应用 BatchNormalization(),然后应用 Activatoin('sigmoid')

关于keras - 时间序列数据的 BatchNormalization 层的 axis 参数设置什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53963181/

相关文章:

python - 如何在 Tensorflow 中加载预训练的 LSTM 模型权重

deep-learning - 如何在pytorch中正确使用分布式数据并行

neural-network - 我可以使用下一层的输出作为 Keras 当前层的输入吗?

machine-learning - 为什么在 mnist fasion keras 代码中,softmax 工作正常,但 sigmoid 工作不正常?

python - 将 Keras 与 tensorflow 后端一起使用时如何控制内存?

python - 层 conv1d_1 的输入 0 与层 : expected ndim=3, 不兼容,发现 ndim=2。完整形状收到 : [None, 200]

c# - 用神经网络求解 Y = X * X + b 型公式

machine-learning - 微调具有更大输入尺寸的模型

python - Keras 中的 Bi-LSTM 注意力模型

deep-learning - 如何在 Keras 中显示路透社数据集的主题?