Keras/Tens中的超参数调谐问题

2024-06-08 04:30:30 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我在学习深度学习,主要依靠Andrew Ng对Coursera的深入学习专门化。你知道吗

我想建立我自己的模型,以99%的准确率对MNIST进行分类(简单的MLP模型,而不是CNN)。因此,我使用KerasClassifier包装我的模型,并使用GridsearchCV微调超参数(包括隐藏层数、单元数、退出率等)

然而,当我在google上进行“微调”时,大多数结果主要是关于“迁移学习”的,即只对学习速率、输出层数或冻结层数进行微调。你知道吗

我知道这些名模只要稍加改动就能解决许多问题。但是,如果我想从头开始构建一个小模型来处理一个特殊的问题,那么常见/最佳实践是什么呢?你知道吗

所以我的问题主要是关于微调模型的常见/最佳实践:

  1. 微调的常用/最佳方法是什么?(我见过有人手动调整超参数,或者使用scikitlearn的RandomizedSearchCV/GridSearchCVhyperas
  2. 我应该使用k-折叠交叉验证吗?(因为它是GridSearchCV的默认集,它极大地增加了训练时间,但帮助不大)
  3. 通过稍微修改现成的模型就足以解决大多数问题了吗?如果没有,我应该向哪个方向前进?你知道吗

谢谢!你知道吗


Tags: 模型参数分类ngcnnmnistmlp微调
1条回答
网友
1楼 · 发布于 2024-06-08 04:30:30
  1. 在深度学习中,微调通常是指对来自新领域的数据重新训练预训练模型的某些层。我相信你正在寻找类似“超参数优化”。有多种方法可以解决这个问题。人们对最好的方法有自己的偏好。使用RandomizedSearchCV/GridSearch-CV或两者的组合都可以。尝试和错误使用一些配置是好的。人们有时会完全重新培训著名的建筑。另一些则采用更为复杂的方法,如使用进化规划(遗传算法)优化超参数。所以你被宠坏了。

  2. 交叉验证通常只在数据集很小的情况下才需要,进一步拆分为一个序列和测试集会减少测试集的大小,从而降低结果的统计显著性(可靠性)。如果你有足够的数据,你可以继续,只需分成train/val/测试集。但它通常是必要的,因为大量的标记数据往往是罕见的。

  3. 如果现成的模型可用于您试图解决的问题,请使用它们!虽然熟悉实现和源代码是有见地的,但没有必要重新发明轮子和重写这些解决方案!

相关问题 更多 >

    热门问题