神经网络的性能受超参数,如学习率、隐含层层数以及大小等的影响非常大,所以在实际应用中,我们往往需要寻找一组最优的超参数组合,尽可能保证神经网络的泛化性能。超参数调参主要分为手动调参和自动调参两种方式。
一、手动调参
手动调参即调参人员进行人工手动调参,对调参人员的知识、经验要求较高,过程繁琐且耗时。神经网络超参数较多且各参数之间相关影响,故该方法不实用。若欲学习调参以及超参数是如何影响网络权重的,那该方法具有一定的意义。
二、自动调参
自动调参即通过算法对超参数进行自动化调参,主要有网格搜索、随机搜索、贝叶斯优化以及其他算法。
(一)网格搜索
遍历所有可能的超参数组合,但依据现有算力,这是不现实的。故一般是事先限定若干可能,再遍历进行调参,性能较优,但搜索仍然不高效。
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
#准备数据
x,y=load_iris()["data"],load_iris()["target"]
#网格搜索
best_score=0
best_param=dict()
for n_estimators in range(10,250,100):
for min_samples_splt in range(2,25,10):
for max_depth in range(5,15,5):
for max_features in range(1,10):
model=RandomForestClassifier(n_estimators=int(n_est