我在研究“为什么我们要冻结层”,我发现答案是:“不要丢失预先训练过的模型的信息”,但是,我们只是冻结了早期层(我知道为什么)。例如:我们的数据与模型所训练的数据非常相似。假设我们没有冻结任何一层。模型会犯很小的错误,收敛也会更少,我们不会破坏任何信息(即使权重变化很小)。我说错了吗?如果我不是,那我们为什么要冻结任何一层?
发布于 2022-10-06 21:43:37
如果数据已经相似,那么对底层(主干)进行培训是没有意义的,因为您的网络已经很适合提取特性。然后,你冻结他们,以快速训练你的分类器(头部)。
正如禤浩焯引用的链接中所述,新的层在第一层中有很大的梯度,这可能会影响模型。因此,如果您的数据相似,但有了新的信息,在培训期间的大梯度更新将破坏您的预培训功能,它也适用于微调,您可以在这里检查。https://keras.io/guides/transfer_学习/
如果数据是不同的--例如,你想在imagenet上训练一个预先训练过的模型来对脑瘤进行分类,那么失去这些特征并没有多大的区别,最好只冻结已经可以提取低水平特征的第一层,例如水平/垂直边缘。
https://datascience.stackexchange.com/questions/113936
复制相似问题