自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Optuna進(jìn)行PyTorch模型的超參數(shù)調(diào)優(yōu)

開源
Optuna是一個(gè)開源的超參數(shù)優(yōu)化框架,Optuna與框架無關(guān),可以在任何機(jī)器學(xué)習(xí)或深度學(xué)習(xí)框架中使用它。本文將以表格數(shù)據(jù)為例,使用Optuna對(duì)PyTorch模型進(jìn)行超參數(shù)調(diào)優(yōu)。

Optuna是一個(gè)開源的超參數(shù)優(yōu)化框架,Optuna與框架無關(guān),可以在任何機(jī)器學(xué)習(xí)或深度學(xué)習(xí)框架中使用它。本文將以表格數(shù)據(jù)為例,使用Optuna對(duì)PyTorch模型進(jìn)行超參數(shù)調(diào)優(yōu)。

Optuna可以使用python pip安裝,如pip install Optuna。也可以使用conda install -c conda-forge Optuna,安裝基于Anaconda的python發(fā)行版。

正如您所看到的,使用基本python語言的幾行代碼,您可以為任何神經(jīng)網(wǎng)絡(luò)創(chuàng)建并執(zhí)行試驗(yàn)。

OPUTNA有一個(gè)簡單的基于API的實(shí)現(xiàn),允許用戶定義要優(yōu)化的度量和要調(diào)查的超參數(shù)空間。只需要調(diào)用一個(gè)函數(shù)來執(zhí)行優(yōu)化過程。它支持廣泛的優(yōu)化算法,包括隨機(jī)搜索、網(wǎng)格搜索和貝葉斯優(yōu)化。并且它可以支持連續(xù)、整數(shù)和分類超參數(shù)的優(yōu)化,以及具有復(fù)雜依賴關(guān)系的超參數(shù)。

Oputna的簡單介紹

讓我們先了解Oputna框架的基本術(shù)語。

Trial:-Trial是評(píng)估一個(gè)目標(biāo)函數(shù)的過程。該對(duì)象傳遞給目標(biāo)函數(shù),提供獲取參數(shù)建議、管理試用狀態(tài)和設(shè)置/獲取試用自定義屬性的接口。

Study:一個(gè)Study對(duì)應(yīng)于一個(gè)優(yōu)化任務(wù),即一組試驗(yàn)。該對(duì)象提供了運(yùn)行新試驗(yàn)、訪問試驗(yàn)歷史、設(shè)置/獲取研究本身的用戶定義屬性的接口。

Study中包含了一個(gè)重要的create_study方法,它是創(chuàng)建新的Study對(duì)象方法重要參數(shù)如下:

  • Objective :目標(biāo)函數(shù)是Optuna優(yōu)化超參數(shù)選擇的核心。雖然暴力網(wǎng)格搜索也是尋找最小化目標(biāo)函數(shù),但它實(shí)際上并沒有考慮到超參數(shù)的哪種組合效果好或不好。
  • Sampler :是一個(gè)采樣器對(duì)象,實(shí)現(xiàn)了值建議的后臺(tái)算法。如果指定None,則單目標(biāo)優(yōu)化時(shí)使用TPESampler,多目標(biāo)優(yōu)化時(shí)使用NSGAIISampler。
  • Pruner :是一個(gè)修剪器對(duì)象,決定提前停止沒有希望的試驗(yàn)。如果指定None,則使用MedianPruner作為默認(rèn)值。
  • Study_name:研究的名稱。如果此參數(shù)設(shè)置為None,則自動(dòng)生成唯一的名稱。
  • Directions : 多目標(biāo)優(yōu)化過程中的方向序列。

Pytorch模型

為了適應(yīng)Oputna的超參數(shù)是搜素,我們需要一個(gè)函數(shù)來根據(jù)不同的參數(shù)返回不同的Pytorch模型,大概是這個(gè)樣子的:

我們幾個(gè)超參數(shù)包括,In_Features ,N_Layers ,DropOut 和N_ouput

而trial 是Oputna傳遞的Trial 實(shí)現(xiàn)。

目標(biāo)函數(shù)

目標(biāo)函數(shù)由我們要優(yōu)化的超參數(shù)組成。在我們的例子中,除了上面的模型的超參數(shù)外,還需要優(yōu)化learning_rate、weight_decay和不同的優(yōu)化器,所以定義如下:

圖片

訓(xùn)練循環(huán)

訓(xùn)練循環(huán)是Optuna中最重要的組成部分。在下面的例子中,我們對(duì)定義目標(biāo)函數(shù)的參數(shù)字典進(jìn)行參數(shù)化。

圖片

Study

正如我們上面所說的,Optuna研究在數(shù)據(jù)集中進(jìn)行了多例試驗(yàn),我們使用損失函數(shù)為RMSE,所以方向是最小化RMSE。在這個(gè)中使用TPESampler.Tree-structured估計(jì)器。

圖片

結(jié)果展示

由于數(shù)據(jù)集非常小,試驗(yàn)在25個(gè)循環(huán)內(nèi)結(jié)束。以下是細(xì)節(jié)。下面給出了最佳試驗(yàn)和超參數(shù)組合,將RMSE最小化到0.058。

Study statistics:
  Number of finished trials: 25
  Number of pruned trials: 0
  Number of complete trials: 25
 Best trial: FrozenTrial(number=18, state=TrialState.COMPLETE, values=[0.058233041420927334], datetime_start=datetime.datetime(2023, 5, 21, 5, 9, 43, 683621), datetime_complete=datetime.datetime(2023, 5, 21, 5, 10, 7, 935450), params={'learning_rate': 0.0010084133367699304, 'optimizer': 'Adam', 'weight_decay': 0.00013535005248600755, 'n_layers': 2, 'dropout': 0.2, 'n_units_l0': 7, 'n_units_l1': 6}, user_attrs={}, system_attrs={}, intermediate_values={}, distributinotallow={'learning_rate': FloatDistribution(high=0.01, log=True, low=0.001, step=None), 'optimizer': CategoricalDistribution(choices=('Adam', 'RMSprop', 'SGD')), 'weight_decay': FloatDistribution(high=0.001, log=True, low=0.0001, step=None), 'n_layers': IntDistribution(high=4, log=False, low=2, step=1), 'dropout': FloatDistribution(high=0.5, log=False, low=0.1, step=0.1), 'n_units_l0': IntDistribution(high=8, log=False, low=2, step=1), 'n_units_l1': IntDistribution(high=7, log=False, low=2, step=1)}, trial_id=18, value=None)
  Value: 0.058233041420927334
 Best Trail Params:
    learning_rate: 0.0010084133367699304
    optimizer: Adam
    weight_decay: 0.00013535005248600755
    n_layers: 2
    dropout: 0.2
    n_units_l0: 7
    n_units_l1: 6

我們還可以通過下面的函數(shù)進(jìn)行結(jié)果的可視化

optuna.visualization.plot_optimization_history(study)

圖片

optuna.visualization.plot_param_importances(study)

圖片

optuna.visualization.plot_slice(study)

圖片

optuna.visualization.plot_parallel_coordinate(study)

圖片

以上就是使用optuna調(diào)優(yōu)Pytorch模型的全部過程,本文的源代碼在這里,并且有完整的運(yùn)行結(jié)果,如果你想自己調(diào)整或者學(xué)習(xí),請(qǐng)看這個(gè)連接:https://www.kaggle.com/code/averma111/pytorch-ps3e15-optuna

責(zé)任編輯:華軒 來源: DeepHub IMBA
相關(guān)推薦

2023-02-13 15:00:13

機(jī)器學(xué)習(xí)scikit-leaPyTorch

2021-01-22 11:18:58

Python機(jī)器學(xué)習(xí)超參數(shù)

2024-03-11 06:00:00

OptunaPython超參數(shù)優(yōu)化

2024-07-16 16:13:14

2022-10-31 11:33:30

機(jī)器學(xué)習(xí)參數(shù)調(diào)優(yōu)

2025-01-07 12:55:28

2024-11-25 08:20:35

2023-11-10 11:23:20

JVM內(nèi)存

2024-03-25 14:22:07

大型語言模型GaLore

2022-03-10 09:48:11

人工智能機(jī)器學(xué)習(xí)模型

2010-09-25 13:05:07

JVM參數(shù)

2010-03-04 10:56:52

JVM參數(shù)

2021-03-26 06:05:17

Tomcat

2023-01-16 08:19:25

線上JVM調(diào)優(yōu)

2010-05-19 17:44:09

2013-03-20 17:30:18

2011-03-31 13:40:34

2022-01-27 23:32:03

Linux操作系統(tǒng)TCP

2011-03-10 14:40:54

LAMPMysql

2023-11-30 18:03:55

IDEA工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)