gpt4 book ai didi

python - 为什么在微调时需要卡住 Batch Normalization 层的所有内部状态

转载 作者:行者123 更新时间:2023-12-04 16:26:22 31 4
gpt4 key购买 nike

以下内容来自Keras教程

This behavior has been introduced in TensorFlow 2.0, in order to enable layer.trainable = False to produce the most commonly expected behavior in the convnet fine-tuning use case.


为什么我们在微调卷积神经网络时要卡住层?是因为tensorflow keras中的一些机制还是因为batch normalization的算法?我自己进行了一个实验,我发现如果 trainable 没有设置为 false,模型往往会灾难性地忘记之前学到的东西,并在最初的几个时期返回非常大的损失。这是什么原因?

最佳答案

在训练期间,不同的批次统计数据作为一种正则化机制,可以提高泛化能力。这有助于在训练大量迭代时最大限度地减少过度拟合。事实上,使用非常大的批量 can harm generalization由于批次统计的变化较小,因此降低了正则化。
在对新数据集进行微调时,如果微调示例与原始训练数据集中的示例具有不同的特征,则批次统计数据可能会非常不同。因此,如果批量标准化未卡住,网络将学习新的批量标准化参数(batch normalization paper 中的 gamma 和 beta),这些参数与原始训练期间其他网络参数已优化的参数不同。由于所需的训练时间或微调数据集的规模较小,在微调期间重新学习所有其他网络参数通常是不可取的。卡住批量标准化避免了这个问题。

关于python - 为什么在微调时需要卡住 Batch Normalization 层的所有内部状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63016740/

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