首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么在微调时必须冻结批处理归一化层的所有内部状态?

为什么在微调时必须冻结批处理归一化层的所有内部状态?
EN

Stack Overflow用户
提问于 2020-07-21 14:26:10
回答 1查看 4.6K关注 0票数 4

以下内容来自Keras教程

这种行为是在TensorFlow 2.0中引入的,目的是使layer.trainable = False能够在convnet微调用例中产生最常见的行为。

为什么我们要在微调卷积神经网络时冻结这一层?是因为tensorflow角的某些机制,还是由于批处理的规范化算法?我自己做了一个实验,我发现如果可训练不被设置为错误,这个模型往往会导致灾难性的忘记以前学过的东西,并且在最初的几个时代还会有很大的损失。原因是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-21 17:46:29

在培训过程中,变批量统计作为一种正则化机制,可以提高泛化能力。这有助于最大限度地减少对大量迭代进行训练时的过度拟合。实际上,使用一个非常大的批处理大小会伤害到泛化,因为批处理统计数据的变化较小,减少了正则化。

当对新数据集进行微调时,如果精调示例具有与原始培训数据集中的示例不同的特性,则批处理统计信息可能会非常不同。因此,如果未冻结批处理规范化,网络将学习新的批规范化参数(分批规范化纸中的γ和beta ),这些参数与其他网络参数在最初的培训中所优化的参数不同。在微调期间,重新学习所有其他网络参数通常是不可取的,这要么是由于所需的培训时间,要么是微调数据集的大小较小。冻结批规范化可避免此问题。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63016740

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档