Tensorflow 标准化 Vs。减去平均值并除以标准差的传统方法

Tensorflow normalize Vs. traditional way of subtracting mean and dividing by std

我很好奇使用 tf.keras.utils.normalize 与我们通常对序列进行归一化(减去均值并除以标准差)的方式有何偏好:

import tensorflow as tf
import numpy as np

series = np.random.random(10) + 10 * np.sin(np.random.random(1))
mean = np.mean(series)
std = np.std(series)

(series - mean) / std

tf.keras.utils.normalize(series)

这两种方法都有 pros/cons 吗?

tf 在 [0,1] 范围内归一化,但我们使用其他方法获得 [-1,1] 范围内的值。

tf.keras.utils.normalize 使用 描述的算法,因此它只是使沿指定轴的数据成为相对于您最喜欢的 lp 范数的单位向量。这是否优于 sklearn.StandardScaler() 取决于问题。对于很多时间序列问题,想要去趋势化,所以取均值0.,所以StandardScaler是合适的。如果您希望输入的缩放比例相当相似,则这两种方法或多或少是等效的。