Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras/Tensorflow中的超参数调谐问题_Python_Tensorflow_Machine Learning_Keras_Deep Learning - Fatal编程技术网

Python Keras/Tensorflow中的超参数调谐问题

Python Keras/Tensorflow中的超参数调谐问题,python,tensorflow,machine-learning,keras,deep-learning,Python,Tensorflow,Machine Learning,Keras,Deep Learning,我最近在学习深度学习,主要依靠Andrew Ng在Coursera上的深度学习专业 我想建立我自己的模型,以99%的准确率分类MNIST(简单的MLP模型,而不是CNN)。因此,我使用KerasClassifier包装我的模型,并使用GridsearchCV微调超参数(包括隐藏层编号、单位编号、退出率等) 然而,当我谷歌“微调”时,大多数结果主要是“转移学习”,这只是调整学习速度、输出层数或冻结层数 我知道这些著名的模型只需稍作改动就能解决许多问题。但是,如果我想从头开始构建一个小模型来处理一个

我最近在学习深度学习,主要依靠Andrew Ng在Coursera上的深度学习专业

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

然而,当我谷歌“微调”时,大多数结果主要是“转移学习”,这只是调整学习速度、输出层数或冻结层数

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

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

  • 微调的常用/最佳方法是什么?(我见过有人手动调整hyperparameters,或者使用scikit learn的
    RandomizedSearchCV
    /
    GridSearchCV
    ,或者
    hyperas
  • 我应该使用k折叠交叉验证吗?(因为它是默认的
    GridSearchCV
    ,它极大地增加了培训时间,但帮助不大)
  • 通过稍微修改现成的模型就足以解决大多数问题吗?如果没有,我应该向哪个方向前进
  • 谢谢

  • 在深度学习中,微调通常是指根据新领域的数据重新训练预先训练的模型的某些层。我相信您正在寻找类似“超参数优化”的东西。有多种方法可以实现这一点。对于最佳方法,人们有自己的偏好。使用RandomizedSearchCV/GridSearch-CV或两者的组合是可以的。使用一些配置进行反复试验是可以的。人们有时会对著名的建筑进行彻底的再培训。其他人则求助于更复杂的方法,如使用进化规划(遗传算法)优化超参数。所以你有点被宠坏了

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

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