什么是冻结/解冻神经网络中的一层?

Niz*_*zam 5 machine-learning neural-network deep-learning tensorflow transfer-learning

我已经在神经网络上玩了很长一段时间了,最​​近在训练神经网络之前遇到了术语“冻结”和“解冻”层,同时阅读有关迁移学习的内容,并且正在努力理解它们的用法。

  • 什么时候应该使用冷冻/解冻?
  • 哪些层要冻结/解冻?例如,当我导入一个预训练模型并在我的数据上训练它时,除了输出层之外,我的整个神经网络是否都被冻结了?
  • 如何确定是否需要解冻?
  • 如果是这样,我如何确定要解冻和训练哪些层以提高模型性能?

Mat*_*ava 5

我只想补充另一个答案,这是最常与 CNN 一起使用的,并且您要冻结(而不是训练)的层数是由您正在解决的任务与原始任务之间的相似度“给定”的(原始网络正在解决的那个)。

如果任务非常相似,假设您正在使用在 imagenet 上预训练的 CNN,并且您只想添加一些网络应该识别的其他“通用”对象,那么您可能只对网络的密集顶部进行训练。

任务越不同,在训练期间您需要解冻的原始网络层数就越多。