Tensorflow 什么是冻结/解冻神经网络中的一层?
我一直在玩神经网络已经有一段时间了,最近在阅读有关迁移学习的书籍时,我遇到了“冻结”和“解冻”这些术语,在训练神经网络之前,我正在努力理解它们的用法Tensorflow 什么是冻结/解冻神经网络中的一层?,tensorflow,machine-learning,deep-learning,neural-network,transfer-learning,Tensorflow,Machine Learning,Deep Learning,Neural Network,Transfer Learning,我一直在玩神经网络已经有一段时间了,最近在阅读有关迁移学习的书籍时,我遇到了“冻结”和“解冻”这些术语,在训练神经网络之前,我正在努力理解它们的用法 什么时候应该使用冷冻/解冻 哪些层要冻结/解冻?例如,当我导入一个预先训练好的模型并在我的数据上训练它时,除了输出层之外,我的整个神经网络都冻结了吗 如何确定是否需要解冻 如果是,我如何确定要解冻和训练哪些层以提高模型性能 冻结意味着该层不会被训练。因此,它的重量不会改变 为什么需要冻结这些层? 有时我们想要有足够深的神经网络,但我们没有足够的时
- 什么时候应该使用冷冻/解冻李>
- 哪些层要冻结/解冻?例如,当我导入一个预先训练好的模型并在我的数据上训练它时,除了输出层之外,我的整个神经网络都冻结了吗李>
- 如何确定是否需要解冻李>
- 如果是,我如何确定要解冻和训练哪些层以提高模型性能李>
例如,当我导入一个预先训练好的模型并在我的数据上训练它时,除了输出层之外,我的整个神经网络都冻结了吗?
-是的,可能是这样。但是你也不能在最后一层上面冻结几层 如何冻结和解冻层?
-在keras中,如果要冻结图层,请使用:
layer.trainable=False
要解冻:
layer.trainable=True
如果是,如何确定要解冻和训练哪些层以提高模型性能?-正如我所说,良好的实践是自上而下的。您应该自己调整冻结层的数量。但是要考虑到,你拥有的解冻层越多,训练就越慢。我想补充一点,这是CNN最常用的答案,你想要冻结(而不是训练)的层的数量是由你正在解决的任务和原始任务之间的相似程度“给出”的(原始网络正在解决的问题) 如果任务非常相似,假设您使用的是imagenet上的CNN预训练,您只想添加一些网络应该识别的其他“通用”对象,那么您可能只需要在网络的密集顶部进行训练即可
任务越不相似,在训练过程中需要解冻的原始网络层就越多。在传输层训练模型时,由于多种原因,我们冻结了某些层的训练,例如,它们可能已经聚合,或者我们希望将新添加的层训练到已经预训练过的层模型。这是迁移学习的一个非常基本的概念,如果你不知道迁移学习,我建议你进行迁移学习。我认为“我如何确定是否需要解冻?”这个问题不是关于技术解决方案,而是一个类似“我如何知道我应该解冻冰冻层”的问题因此,这是一个关于有助于决定解冻一层的战略和指标的问题。