购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4-8 超参数调校

这一节来研究超参数(Hyperparameters)对效能的影响,在4-1-3节只对单一变量进行调校,假如要同时调校多个超参数,有一些套件可以帮忙,包括Ray Tune、Keras Tuner、hyperopt、Ax等。

PyTorch官网推荐Ray Tune [25] ,Ray是一个非常强大的平行处理的套件,其中的一个模块Ray Tune是用于效能调校,以下就介绍其基本的用法。首先安装套件,指令如下:pip install ray。

范例.使用Ray Tune对神经网络进行超参数调校。

下列程序代码请参考【04_16_超参数调校.ipynb】。

(1)载入套件。

(2)判断是否有GPU,若有则使用GPU。

(3)建立模型。

(4)定义模型训练及测试函数,测试函数要回传效能行量指标给Ray做判断,以决定最佳超参数组合。

(5)定义特征缩放函数:采用标准化,平均数为0.1307,标准偏差为0.3081。

(6)定义数据加载及模型训练函数,还包括:

优化器:使用组态参数,提供多种组合的测试,config为组态参数内容。

训练结果交回给Ray Tune:tune.report(mean_accuracy=acc),指定acc为平均准确率,作为效能比较的基准。

每5周期存盘一次。

(7)定义参数调校的组态。

学习率(learning rate)测试选项含0.01、0.1、0.5,使用grid_search表示每一选项都要测试,若使用choice,则是多选一,sample_from则是随机抽样。

学习率动能(momentum):采用均匀分配抽样。

除了上述优化器参数外,调校任何超参数及模型的神经元个数均可。

Ray Tune提供非常多的随机分配,详情请参考“Search Space API” [26]

第12行:实际执行参数调校,若无GPU,请移除resources_per_trial={'gpu': 1},另外,参数调校预设执行10个回合,可以加入num_samples参数,指定回合数。

执行结果如下,按平均准确率(acc)降序排列,最佳参数组合为lr: 0.01, momentum:0.620798,平均准确率为0.9644。

(8)对训练过程的准确率绘图。

执行结果如图4.15,第一个组合准确率最高,且接近收敛。

图4.15 执行结果

(9)显示详细调校内容:例如每一回合(Trial)训练过程的准确率及运行时间。

截取两个参数组合的执行结果。

其他字段可参考《Ray Tune使用手册》 [27]

(10)显示各组合的执行结果。

执行结果如下。

(11)取得最佳模型参数:取最大(max)的平均准确率(mean_accuracy),若有多笔,取最后一笔。

执行结果:{'lr': 0.01,'momentum': 0.6207983646235925}

(12)加载最佳模型。

(13)使用最佳模型测试。

执行结果:准确率非常高,达到9722/10000 (97%)。

上述程序只是简单的范例,Ray Tune还有更多进阶的函数及参数可供使用,详情可参阅Pytorch官网范例 [25] 及Ray Tune官网 [28]

参数调校是深度学习中非常重要的步骤,因为深度学习是一个黑箱科学,加上我们对高维数据的联合概率分配也是一无所知,唯有通过大量的试验,才能获得较佳的模型。但困难的是,模型训练的执行非常耗时,如何通过各种方法或套件的协助,平行处理或分散至多台机器执行,缩短调校时间,是建构AI模型时须认真思考的课题。 Mtkge83SLvLmrOtjqfvd4HZrvkqZbCrk2SWNBXLoS2TNY3nlz6tfuPcwe9FgTNCm

点击中间区域
呼出菜单
上一章
目录
下一章
×