pytorch模型優化簡介,未完結版

如有幫助,點贊收藏關注!
如需轉載,請注明出處!

今天來介紹torch模型中的優化器

優化是指在每個訓練步驟中調整模型參數以減少模型誤差的過程。

優化算法定義如何執行這個過程
所有優化邏輯都封裝在優化器對象中。在這里,我們使用SGD優化器;此外,PyTorch中還有許多不同的優化器,如adam和RMSProp,它們可以更好地處理不同類型的模型和數據。

復雜代碼被封裝在優化器里,我們調用的時候只需要給出簡單參數和優化器名稱即可。真正起作用的就是這些很簡短的語句。

隨機梯度下降法(SGD)

一般指的mini-batch gradient descent
每一次迭代計算mini-batch的梯度,然后對參數進行更新,是最常見的優化方法。
缺點1:SGD容易收斂到局部最優,并且在某些情況下可能被困在鞍點。
缺點2:選擇合適的learning rate比較困難 - 對所有的參數更新使用同樣的learning rate。對
于稀疏數據或者特征,有時我們可能想更新快一些對于不經常出現的特征,對于常出現的特征
更新慢一些,這時候SGD就不太能滿足要求了

#初始化
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)
...
#循環loop中:
#重置模型參數的梯度。默認是累加,為了防止重復計數,在每次迭代時顯式地將它們歸零。
optimizer.zero_grad()
#計算梯度
loss.backward()
#根據上面計算的梯度,調整參數
optimizer.step()

RMSprop

是一種自適應學習率的優化算法,在更新參數時根據歷史梯度平方的加權平均來動態調整每個參數的學習率。在PyTorch中,可以通過設置optim.RMSprop()來使用該優化器。

optimizer = torch.optim.RMSprop(model.parameters(), lr=learning_rate)

adam

是一種融合了動量梯度下降和自適應學習率的優化算法,在更新參數時既考慮歷史梯度的加權平均又考慮歷史梯度平方的加權平均。在PyTorch中,可以通過設置optim.Adam()來使用該優化器。

optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)

Momentum Gradient Descent

動量梯度下降是一種在梯度下降更新過程中加入動量項的優化算法,可以加速收斂并減少震蕩。在PyTorch中,可以通過設置momentum參數實現動量梯度下降。

optimizer = torch.optim.RMSprop(model.parameters(), lr=learning_rate, momentum=momentum)

AdaGrad

是一種自適應學習率的優化算法,在更新參數時根據歷史梯度信息來動態調整每個參數的學習率。在PyTorch中,可以通過設置optim.Adagrad()來使用該優化器。

optimizer = torch.optim.Adagrad(model.parameters(), lr=learning_rate)

AdamW

是一種基于Adam優化算法的變體,它引入了權重衰減(weight decay)來解決Adam可能存在的參數過度擬合問題。在PyTorch中,可以通過設置optim.AdamW()來使用該優化器。

optimizer = torch.optim.AdamW(model.parameters(), lr=learning_rate)

Adadelta

是一種自適應學習率的優化算法,它與RMSprop相似,但引入了一個衰減系數來平衡歷史梯度平方和目標函數變化量。在PyTorch中,可以通過設置optim.Adadelta()來使用該優化器。

optimizer = torch.optim.Adadelta(model.parameters(), lr=learning_rate)

有時間再一一整理同樣數據開啟了不同優化器的效果。
看到這里了,給個鼓勵。謝謝啦!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/167529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/167529.shtml
英文地址,請注明出處:http://en.pswp.cn/news/167529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【黑馬甄選離線數倉day04_維度域開發】

1. 維度主題表數據導出 1.1 PostgreSQL介紹 PostgreSQL 是一個功能強大的開源對象關系數據庫系統,它使用和擴展了 SQL 語言,并結合了許多安全存儲和擴展最復雜數據工作負載的功能。 官方網址:PostgreSQL: The worlds most advanced open s…

音視頻項目——RTSP服務器解析(1)

介紹 利用線程池,實現 RTSP 服務器的高并發請求處理。 RTSP 是音視頻的控制視頻的協議,如果您還不了解,可以看看之前我解析 RTSP 協議的文章。音視頻協議解析(RTP/RTCP/RTSP/RTMP)——RTSP解析-CSDN博客 解析 我們先來看 RTP 的實現。RTP 是音…

Django框架之auth模塊

目錄 一、Auth模塊引入 二、創建超級用戶(管理員) 三、依賴于auth_user表完成登錄注冊功能 【1】基礎登陸 【2】保存用戶狀態 【3】登錄后跳轉 (1) 登錄后才能訪問頁面 -- 局部配置 (2) 登錄后才能訪問頁面 -- 全局配置 (3) 小結 三、修改密碼 四、注銷 五、注冊…

Springboot將多個圖片導出成zip壓縮包

Springboot將多個圖片導出成zip壓縮包 將多個圖片導出成zip壓縮包 /*** 判斷時間差是否超過6小時* param startTime 開始時間* param endTime 結束時間* return*/public static boolean isWithin6Hours(String startTime, String endTime) {// 定義日期時間格式DateTimeFormatt…

【數據結構】—搜索二叉樹(C++實現,超詳細!)

🎬慕斯主頁:修仙—別有洞天 ??今日夜電波:消えてしまいそうです—真夜中 1:15━━━━━━?💟──────── 4:18 🔄 ?? ? ??…

函數計算的新征程:使用 Laf 構建 AI 知識庫

Laf 已成功上架 Sealos 模板市場,可通過 Laf 應用模板來一鍵部署! 這意味著 Laf 在私有化部署上的擴展性得到了極大的提升。 Sealos 作為一個功能強大的云操作系統,能夠秒級創建多種高可用數據庫,如 MySQL、PostgreSQL、MongoDB …

js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj,將數組中的內容作為對象的key轉化為對象,對應的值轉換為對象對應的值

1.需求場景 哈嘍 大家好啊,今天遇到一個場景, js實現獲取原生form表單的數據序列化表單以及將數組轉化為一個對象obj,將數組中的內容作為對象的key轉化為對象,對應的值轉換為對象對應的值 數組對象中某個屬性的值,轉…

元宇宙現已開放!

在 2023 年 11 月 3 日 The Sandbox 首個全球創作者日上,The Sandbox 聯合創始人 Arthur Madrid 和 Sebastien Borget 宣布元宇宙已開放,已創作完整體驗的 LAND 持有者可以自行將體驗發布至 The Sandbox 地圖上。 精選速覽 LAND 持有者:如果…

在JVM中 判定哪些對象是垃圾?

目錄 垃圾的條件 1、引用計數法 2、可達性分析 3、強引用 4、軟引用 5、弱引用 6、虛引用 判斷垃圾的條件 在Java虛擬機(JVM)中,垃圾收集器負責管理內存,其中的垃圾收集算法用于確定哪些對象是垃圾,可以被回收…

VBA即用型代碼手冊之工作薄的關閉保存及創建

我給VBA下的定義:VBA是個人小型自動化處理的有效工具。可以大大提高自己的勞動效率,而且可以提高數據的準確性。我這里專注VBA,將我多年的經驗匯集在VBA系列九套教程中。 作為我的學員要利用我的積木編程思想,積木編程最重要的是積木如何搭建…

[Latex] Riemann 問題中的激波,接觸間斷,膨脹波的 Tikz 繪圖

Latex 代碼 \begin{figure}\begin{subfigure}[b]{0.32\textwidth}\centering\resizebox{\linewidth}{!}{\begin{tikzpicture}\coordinate (o) at (0,0);\coordinate (Si) at (2.5,2.5);\coordinate (x) at (1,0);\draw[->] (0,0) -- (3,0) node[right] {$x$};\draw[->] …

ArkTS-自定義組件學習

文章目錄 創建自定義組件頁面和自定義組件生命周期自定義組件和頁面的區別頁面生命周期(即被Entry修飾的組件)組件生命周期(即被Component修飾的組件) Builder裝飾器:自定義構建函數按引用傳遞參數按值傳遞參數 BuilderParam裝飾器:引用Builder函數 這個…

Python 將列表拼接為一個字符串,Python join

目錄 join方法的源碼: 列表數據為字符串 列表數據為數字 三引號也可以使用join join方法的源碼: def join(self, abNone, pqNone, rsNone): # real signature unknown; restored from __doc__"""Concatenate any number of strings.T…

harmonyos應用開發者高級認證考試部分答案

1只要使用端云一體化的云端資源就需要支付費用(錯) 2所有使用Component修飾的自定義組件都支持onPageShow,onBackPress和onPageHide生命周期函數。(錯) 3 HarmonyOS應用可以兼容OpenHarmony生態(對&#…

一文讀懂如何安全地存儲密碼

目錄 引言 明文存儲 基本哈希存儲 加鹽哈希存儲 適應性哈希算法 密碼加密存儲 小結 引言 密碼是最常用的身份驗證手段,既簡單又高效。密碼安全是網絡安全的基石,對保護個人和組織信息的安全具有根本性的作用。然而有關密碼泄漏的安全問題一再發生…

生物動力葡萄酒和有機葡萄酒一樣嗎?

農業維持了數十萬年的文明,但當人類以錯誤的方式過多干預,過于專注于制造和操縱產品時,農業往往會失敗。如果我們的目標是獲得最高質量的收成,并長期堅持我們的做法,我們就必須與土地打交道。 當我們開始尋找生物動力…

應用內測分發平臺如何上傳應用包體?

●您可免費將您的應用(支持蘋果.ios安卓.apk文件)上傳至咕嚕分發平臺,我們將免費為應用生成下載信息,但咕嚕分發將會對應用的下載次數進行收費(每個賬號都享有免費贈送的下載點數以及參加活動的贈送點數)&a…

UVA1025 城市里的間諜 A Spy in the Metro

UVA1025 城市里的間諜 A Spy in the Metro 題面翻譯 題目大意 某城市地鐵是一條直線,有 n n n( 2 ≤ n ≤ 50 2\leq n\leq 50 2≤n≤50)個車站,從左到右編號 1 … n 1\ldots n 1…n。有 M 1 M_1 M1? 輛列車從第 1 1 1 站開…

【電路筆記】-分壓器

分壓器 文章目錄 分壓器1、概述2、負載分壓器3、分壓器網絡4、無功分壓器4.1 電容分壓器4.2 感應分壓器 5、總結 有時,需要精確的電壓值作為參考,或者僅在需要較少功率的電路的特定階段之前需要。 分壓器是解決此問題的一個簡單方法,因為它們…

【Vue】filter的用法

上一篇&#xff1a; vue的指令 https://blog.csdn.net/m0_67930426/article/details/134599378?spm1001.2014.3001.5502 本篇所使用指令 v-for v-on v-html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…