chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>PyTorch教程19.2之超參數(shù)優(yōu)化API

PyTorch教程19.2之超參數(shù)優(yōu)化API

2023-06-05 | pdf | 0.26 MB | 次下載 | 免費(fèi)

資料介紹

在我們深入研究該方法之前,我們將首先討論一個(gè)基本的代碼結(jié)構(gòu),它使我們能夠有效地實(shí)現(xiàn)各種 HPO 算法。一般來說,這里考慮的所有 HPO 算法都需要實(shí)現(xiàn)兩個(gè)決策原語,即搜索調(diào)度。首先,他們需要對(duì)新的超參數(shù)配置進(jìn)行采樣,這通常涉及對(duì)配置空間的某種搜索。其次,對(duì)于每個(gè)配置,HPO 算法需要安排其評(píng)估并決定為其分配多少資源。一旦我們開始評(píng)估配置,我們就會(huì)將其稱為試用。我們將這些決定映射到兩個(gè)類,HPOSearcherHPOScheduler除此之外,我們還提供HPOTuner執(zhí)行優(yōu)化過程的類。

這種調(diào)度器和搜索器的概念也在流行的 HPO 庫中實(shí)現(xiàn),例如 Syne Tune Salinas等人,2022 年、Ray Tune Liaw等人,2018 年或 Optuna Akiba等人,2019 年

import time
from scipy import stats
from d2l import torch as d2l

19.2.1。搜尋器

下面我們定義一個(gè)搜索器的基類,通過函數(shù)提供一個(gè)新的候選配置sample_configuration實(shí)現(xiàn)此功能的一種簡(jiǎn)單方法是隨機(jī)對(duì)配置進(jìn)行統(tǒng)一采樣,就像我們?cè)?第 19.1 節(jié)中對(duì)隨機(jī)搜索所做的那樣。更復(fù)雜的算法,例如貝葉斯優(yōu)化,將根據(jù)先前試驗(yàn)的表現(xiàn)做出這些決定。因此,隨著時(shí)間的推移,這些算法能夠?qū)Ω邢M暮蜻x人進(jìn)行抽樣。我們添加該update 功能是為了更新以前試驗(yàn)的歷史,然后可以利用它來改進(jìn)我們的抽樣分布。

class HPOSearcher(d2l.HyperParameters): #@save
  def sample_configuration() -> dict:
    raise NotImplementedError

  def update(self, config: dict, error: float, additional_info=None):
    pass

以下代碼顯示了如何在此 API 中實(shí)現(xiàn)我們上一節(jié)中的隨機(jī)搜索優(yōu)化器。作為一個(gè)輕微的擴(kuò)展,我們?cè)试S用戶通過 指定要評(píng)估的第一個(gè)配置 initial_config,而隨后的配置是隨機(jī)抽取的。

class RandomSearcher(HPOSearcher): #@save
  def __init__(self, config_space: dict, initial_config=None):
    self.save_hyperparameters()

  def sample_configuration(self) -> dict:
    if self.initial_config is not None:
      result = self.initial_config
      self.initial_config = None
    else:
      result = {
        name: domain.rvs()
        for name, domain in self.config_space.items()
      }
    return result

19.2.2。調(diào)度程序

除了新試驗(yàn)的采樣配置外,我們還需要決定何時(shí)進(jìn)行試驗(yàn)以及進(jìn)行多長(zhǎng)時(shí)間。實(shí)際上,所有這些決定都是由 完成的HPOScheduler,它將新配置的選擇委托給HPOSearcher. suggest只要某些訓(xùn)練資源可用,就會(huì)調(diào)用該方法。除了調(diào)用sample_configuration搜索器之外,它還可以決定諸如max_epochs(即訓(xùn)練模型的時(shí)間)之類的參數(shù)。update每當(dāng)試驗(yàn)返回新觀察時(shí)調(diào)用該方法。

class HPOScheduler(d2l.HyperParameters): #@save
  def suggest(self) -> dict:
    raise NotImplementedError

  def update(self, config: dict, error: float, info=None):
    raise NotImplementedError

要實(shí)現(xiàn)隨機(jī)搜索以及其他 HPO 算法,我們只需要一個(gè)基本的調(diào)度程序,它可以在每次新資源可用時(shí)調(diào)度新的配置。

class BasicScheduler(HPOScheduler): #@save
  def __init__(self, searcher: HPOSearcher):
    self.save_hyperparameters()

  def suggest(self) -> dict:
    return self.searcher.sample_configuration()

  def update(self, config: dict, error: float, info=None):
    self.searcher.update(config, error, additional_info=info)

19.2.3。調(diào)諧器

最后,我們需要一個(gè)組件來運(yùn)行調(diào)度器/搜索器并對(duì)結(jié)果進(jìn)行一些簿記。下面的代碼實(shí)現(xiàn)了 HPO 試驗(yàn)的順序執(zhí)行,在下一個(gè)訓(xùn)練作業(yè)之后評(píng)估一個(gè)訓(xùn)練作業(yè),并將作為一個(gè)基本示例。我們稍后將使用 Syne Tune來處理更具可擴(kuò)展性的分布式 HPO 案例。

class HPOTuner(d2l.HyperParameters): #@save
  def __init__(self, scheduler: HPOScheduler, objective: callable):
    self.save_hyperparameters()
    # Bookeeping results for plotting
    self.incumbent = None
    self.incumbent_error = None
    self.incumbent_trajectory = []
    self.cumulative_runtime = []
    self.current_runtime = 0
    self.records = []

  def run(self, number_of_trials):
    for i in range(number_of_trials):
      start_time = time.time()
      config = self.scheduler.suggest()
      print(f"Trial {i}: config = {config}")
      error = self.objective(**config)
      error = float(error.cpu().detach().numpy())
      self.scheduler.update(config, error)
      runtime = time.time() - start_time
      self.bookkeeping(config, error, runtime)
      print(f"  error = {error}, runtime = {runtime}")

19.2.4。簿記 HPO 算法的性能

對(duì)于任何 HPO 算法,我們最感興趣的是性能最佳的配置(稱為incumbent)及其在給定掛鐘時(shí)間后的驗(yàn)證錯(cuò)誤。這就是我們跟蹤runtime每次迭代的原因,其中包括運(yùn)行評(píng)估的時(shí)間(調(diào)用 objective)和做出決策的時(shí)間(調(diào)用 scheduler.suggest)。在續(xù)集中,我們將繪制 cumulative_runtimeagainstincumbent_trajectory以可視化根據(jù)( 和) 定義的 HPO 算法的任何時(shí)間性能。這使我們不僅可以量化優(yōu)化器找到的配置的工作情況,還可以量化優(yōu)化器找到它的速度。schedulersearcher

@d2l.add_to_class(HPOTuner) #@save
def bookkeeping(self, config: dict, error: float, runtime: float):
  self.records.append({"config": config, "error": error, "runtime": runtime})
  # Check if the last hyperparameter configuration performs better
  # than the incumbent
  if self.incumbent is None or self.incumbent_error > error:
    self.incumbent = config
    self.incumbent_error = error
  # Add current best observed performance to the optimization trajectory
  self.incumbent_trajectory.append(self.incumbent_error)
  # Update runtime
  self.current_runtime += runtime
  self.cumulative_runtime.append(self.current_runtime)

19.2.5。示例:優(yōu)化卷積神經(jīng)網(wǎng)絡(luò)的超參數(shù)

我們現(xiàn)在使用隨機(jī)搜索的新實(shí)現(xiàn)來優(yōu)化 第 7.6 節(jié)中卷積神經(jīng)網(wǎng)絡(luò)批量大小學(xué)習(xí)率。我們通過定義目標(biāo)函數(shù),這將再次成為驗(yàn)證錯(cuò)誤。LeNet

def hpo_objective_lenet(learning_rate, batch_size, max_epochs=10): #@save
  model = d2l.LeNet(lr=learning_rate, num_classes=10)
  trainer = d2l.HPOTrainer(max_epochs=max_epochs, num_gpus=1)
  data = d2l.FashionMNIST(batch_size=batch_size)
  model.apply_init([next(iter(data.get_dataloader(True)))[0]], d2l.init_cnn)
  trainer.fit(model=model, data=data)
  validation_error = trainer.validation_error()
  return validation_error

我們還需要定義配置空間。此外,要評(píng)估的第一個(gè)配置是 第 7.6 節(jié)中使用的默認(rèn)設(shè)置。

config_space = {
  "learning_rate": stats.loguniform(1e-2, 1),
  "batch_size": stats.randint(32, 256),
}
initial_config = {
  "learning_rate": 0.1,
  "batch_size": 128,
}

現(xiàn)在我們可以開始隨機(jī)搜索了:

searcher = RandomSearcher(config_space, initial_config=initial_config)
scheduler = BasicScheduler(searcher=searcher)
tuner = HPOTuner(scheduler=scheduler, objective=hpo_objective_lenet)
tuner.run(number_of_trials=5)
  error = 0.17130666971206665, runtime = 125.33143877983093
https://file.elecfans.com/web2/M00/AA/48/pYYBAGR9PVuAO21vAAF9e-RRQjc464.svg
https://file.elecfans.com/web2/M00/A9/CE/poYBAGR9PV2ARgCBAAF-SCs89bw491.svg
https://file.elecfans.com/web2/M00/AA/48/pYYBAGR9PV-AcPXNAAF_kYZ_xQw068.svg
https://file.elecfans.com/web2/M00/A9/CE/poYBAGR9PWGAWTGGAAF_K5I3kmI689.svg
https://file.elecfans.com/web2/M00/AA/48/pYYBAGR9PWSAQ2zDAAFzyB-zwLc643.svg

下面我們繪制了現(xiàn)任者的優(yōu)化軌跡,以獲得隨機(jī)搜索的任何時(shí)間性能:

board = d2l.ProgressBoard(xlabel="time", ylabel="error")
for time_stamp, error in zip(
  tuner.cumulative_runtime, tuner.incumbent_trajectory
):
  board.draw(time_stamp, error, "random search", every_n=1)
https://file.elecfans.com/web2/M00/AA/48/pYYBAGR9PWaAXsTGAAD-6d95H6c198.svg

19.2.6. 比較 HPO 算法

正如訓(xùn)練算法或模型架構(gòu)一樣,了解如何最好地比較不同的 HPO 算法非常重要。每次 HPO 運(yùn)行取決于隨機(jī)性的兩個(gè)主要來源:訓(xùn)練過程的隨機(jī)效應(yīng),例如隨機(jī)權(quán)重初始化或小批量排序,以及 HPO 算法本身的內(nèi)在隨機(jī)性,例如隨機(jī)搜索的隨機(jī)抽樣。因此,在比較不同的算法時(shí),至關(guān)重要的是多次運(yùn)行每個(gè)實(shí)驗(yàn)并報(bào)告基于隨機(jī)數(shù)生成器的不同種子的算法多次重復(fù)的總體統(tǒng)計(jì)數(shù)據(jù),例如平均值或中值。

為了說明這一點(diǎn),我們比較隨機(jī)搜索(參見第 19.1.2 節(jié))和貝葉斯優(yōu)化Snoek等人,2012 年在調(diào)整前饋神經(jīng)網(wǎng)絡(luò)的超參數(shù)方面的作用。每個(gè)算法都經(jīng)過評(píng)估

API 調(diào)度器 pytorch
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費(fèi)
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊(cè)
  6. 2.33 MB  |  次下載  |  免費(fèi)
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊(cè)
  8. 2.62 MB  |  次下載  |  免費(fèi)
  9. 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊(cè)
  14. 2.50 MB   |  次下載  |  免費(fèi)
  15. 8MS1000TA 超聲波測(cè)量模擬前端芯片技術(shù)手冊(cè)
  16. 0.60 MB   |  次下載  |  免費(fèi)

本月

  1. 1愛華AIWA HS-J202維修手冊(cè)
  2. 3.34 MB   |  37次下載  |  免費(fèi)
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
  4. 1.63 MB   |  23次下載  |  免費(fèi)
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書
  8. 838.47 KB  |  5次下載  |  免費(fèi)
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊(cè)
  16. 1.81 MB   |  1次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分