gpt4 book ai didi

tensorflow - CNN : Fine tuning small network vs feature extracting from a big network

转载 作者:行者123 更新时间:2023-12-05 03:06:32 24 4
gpt4 key购买 nike

详细说明:在什么情况下微调小型网络(例如 SqueezeNet)的所有层比提取特征或仅微调大型网络(例如 inceptionV4)的最后 1 或 2 个卷积层表现更好?

我的理解是两者所需的计算资源具有可比性。我记得读过 paper极端选项,即微调 90% 或 10% 的网络,与更温和的 50% 相比要好得多。那么,当无法进行广泛试验时,默认选择应该是什么?

任何过去的实验和对结果的直观描述、研究论文或博客都会特别有帮助。谢谢。

最佳答案

我在训练 SqueezeNet 等模型方面经验不多,但我认为仅微调大型网络的最后 1 或 2 层要容易得多:您不必广泛搜索许多最佳超参数。迁移学习与 LR finder 和来自 fast.ai 的循环学习率开箱即用,效果惊人。

如果你想在训练后进行快速推理,那么最好训练 SqueezeNet。如果新任务与 ImageNet 非常不同,也可能是这种情况。

来自 http://cs231n.github.io/transfer-learning/ 的一些直觉

  • 新数据集较小且与原始数据集相似。由于数据很小,出于过度拟合的考虑,微调 ConvNet 并不是一个好主意。由于数据与原始数据相似,我们希望 ConvNet 中的更高级别的特征也与该数据集相关。因此,最好的想法可能是在 CNN 代码上训练线性分类器。
  • 新数据集很大并且与原始数据集相似。由于我们拥有更多数据,因此我们更有信心在尝试对整个网络进行微调时不会过度拟合。
  • 新数据集很小,但与原始数据集有很大不同。由于数据很小,最好只训练线性分类器。由于数据集非常不同,因此最好不要从网络顶部训练分类器,因为它包含更多特定于数据集的特征。相反,根据网络中较早位置的激活来训练 SVM 分类器可能效果更好。
  • 新数据集很大,与原始数据集有很大不同。由于数据集非常大,我们可能期望我们能够负担得起从头开始训练 ConvNet。然而,在实践中,使用来自预训练模型的权重进行初始化通常仍然是有益的。在这种情况下,我们将有足够的数据和信心对整个网络进行微调。

关于tensorflow - CNN : Fine tuning small network vs feature extracting from a big network,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49178991/

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