gpt4 book ai didi

keras - Keras 中输入数据的规范化

转载 作者:行者123 更新时间:2023-12-01 23:14:11 30 4
gpt4 key购买 nike

DL 中的一项常见任务是将输入样本归一化为零均值和单位方差。可以使用如下代码“手动”执行规范化:

mean = np.mean(X, axis = 0)
std = np.std(X, axis = 0)
X = [(x - mean)/std for x in X]

但是,除了要训练的 Keras 模型之外,还必须保留平均值和标准值,以规范测试数据。由于均值和标准差是可学习的参数,也许 Keras 可以学习它们?像这样的东西:
m = Sequential()
m.add(SomeKerasLayzerForNormalizing(...))
m.add(Conv2D(20, (5, 5), input_shape = (21, 100, 3), padding = 'valid'))
... rest of network
m.add(Dense(1, activation = 'sigmoid'))

我希望你明白我在说什么。

最佳答案

添加 BatchNormalization作为第一层,它按预期工作,尽管与 OP 的示例不完全一样。可以看详细解释here .
OP 的示例和批量归一化都在推理过程中使用输入数据的学习均值和标准差。但是 OP 的示例使用了一个简单的均值,该均值赋予每个训练样本相同的权重,而 BatchNormalization 层使用移动平均值,该平均值赋予最近看到的样本比旧样本更多的权重。
重要的是,批量标准化在训练期间的工作方式与 OP 的示例不同。在训练期间,该层使用当前批次输入的均值和标准差对其输出进行归一化。
第二个区别是 OP 的代码产生的输出均值为 0,标准差为 1。批量归一化改为学习输出的均值和标准差,从而改善整个网络的损失。要获得 OP 示例的行为,应使用参数 scale=False 初始化批量标准化。和 center=False .

关于keras - Keras 中输入数据的规范化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55924789/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com