14-模型保存與加載:參數(shù)、優(yōu)化器狀態(tài)與完整訓(xùn)練恢復(fù)
概述訓(xùn)練模型可能花幾分鐘也可能花幾天。訓(xùn)練結(jié)果如果只存在內(nèi)存里程序一結(jié)束就丟了。Paddle 中常用paddle.save()和paddle.load()保存、加載模型相關(guān)狀態(tài)。常見(jiàn)保存對(duì)象包括模型參數(shù)model.state_dict()。優(yōu)化器狀態(tài)optimizer.state_dict()。當(dāng)前 epoch、best accuracy、訓(xùn)練配置等元信息。對(duì)應(yīng)場(chǎng)景場(chǎng)景保存內(nèi)容只做推理模型參數(shù)繼續(xù)訓(xùn)練模型參數(shù) 優(yōu)化器狀態(tài) epoch保存最佳模型驗(yàn)證集指標(biāo)最好的模型參數(shù)完整恢復(fù)實(shí)驗(yàn)參數(shù)、優(yōu)化器、指標(biāo)、配置讀完本文你應(yīng)該能保存和加載 Paddle 模型參數(shù)保存最佳模型并用 checkpoint 完整恢復(fù)訓(xùn)練。state_dict模型參數(shù)的字典每個(gè)nn.Layer都可以通過(guò)state_dict()獲取參數(shù)狀態(tài)statemodel.state_dict()它本質(zhì)上是一個(gè)字典key 是參數(shù)名value 是 Tensor。示例forname,tensorinmodel.state_dict().items():print(name,tensor.shape)你會(huì)看到類似net.0.weight [2, 16] net.0.bias [16] net.2.weight [16, 2] net.2.bias [2]state_dict保存的是參數(shù)數(shù)值不保存模型類定義。因此加載時(shí)需要先創(chuàng)建同樣結(jié)構(gòu)的模型。保存模型參數(shù)保存paddle.save(model.state_dict(),model.pdparams)加載modelClassifier()state_dictpaddle.load(model.pdparams)model.set_state_dict(state_dict)model.eval()推理withpaddle.no_grad():logitsmodel(x)注意模型結(jié)構(gòu)必須和保存時(shí)一致。如果層名、參數(shù) shape 不一致加載會(huì)失敗或行為不符合預(yù)期。保存最佳模型訓(xùn)練過(guò)程中常根據(jù)驗(yàn)證集指標(biāo)保存最佳模型best_val_acc0.0forepochinrange(num_epochs):train_loss,train_acctrain_one_epoch(model,train_loader,optimizer)val_loss,val_accevaluate(model,val_loader)ifval_accbest_val_acc:best_val_accval_acc paddle.save(model.state_dict(),best_model.pdparams)print(epoch,val_acc,best_val_acc)這樣最終得到的是驗(yàn)證集表現(xiàn)最好的模型而不一定是最后一個(gè) epoch 的模型。為什么不總保存最后一輪后期可能過(guò)擬合。驗(yàn)證集指標(biāo)可能先升后降。最佳模型可能出現(xiàn)在中間 epoch。加載最佳模型并測(cè)試訓(xùn)練結(jié)束后best_modelClassifier()best_model.set_state_dict(paddle.load(best_model.pdparams))best_model.eval()test_loss,test_accevaluate(best_model,test_loader)print(test_acc:,test_acc)測(cè)試集評(píng)估應(yīng)該在模型選擇結(jié)束后進(jìn)行。不要用測(cè)試集決定是否保存最佳模型最佳模型應(yīng)由驗(yàn)證集選擇。保存優(yōu)化器狀態(tài)如果要中斷后繼續(xù)訓(xùn)練僅保存模型參數(shù)不夠。Adam、Momentum 等優(yōu)化器內(nèi)部有動(dòng)量、二階矩估計(jì)等狀態(tài)。保存優(yōu)化器狀態(tài)paddle.save(optimizer.state_dict(),optimizer.pdopt)加載optimizer.set_state_dict(paddle.load(optimizer.pdopt))注意加載順序先創(chuàng)建模型 再創(chuàng)建優(yōu)化器并傳入 model.parameters() 再加載模型參數(shù) 再加載優(yōu)化器狀態(tài)完整 checkpoint恢復(fù)訓(xùn)練現(xiàn)場(chǎng)更推薦保存一個(gè)完整 checkpointcheckpoint{epoch:epoch,model:model.state_dict(),optimizer:optimizer.state_dict(),best_val_acc:best_val_acc,}paddle.save(checkpoint,checkpoint.pdckpt)加載checkpointpaddle.load(checkpoint.pdckpt)modelClassifier()optimizerpaddle.optimizer.Adam(learning_rate0.01,parametersmodel.parameters(),)model.set_state_dict(checkpoint[model])optimizer.set_state_dict(checkpoint[optimizer])start_epochcheckpoint[epoch]1best_val_acccheckpoint[best_val_acc]這樣可以從中斷位置繼續(xù)訓(xùn)練。完整示例保存最佳模型和 checkpointbest_val_acc0.0num_epochs20forepochinrange(num_epochs):train_loss,train_acctrain_one_epoch(model,train_loader,optimizer)val_loss,val_accevaluate(model,val_loader)ifval_accbest_val_acc:best_val_accval_acc paddle.save(model.state_dict(),best_model.pdparams)checkpoint{epoch:epoch,model:model.state_dict(),optimizer:optimizer.state_dict(),best_val_acc:best_val_acc,}paddle.save(checkpoint,last_checkpoint.pdckpt)print(epoch:,epoch,train_loss:,train_loss,val_acc:,val_acc,best_val_acc:,best_val_acc,)這段代碼同時(shí)保存best_model.pdparams驗(yàn)證集最好的模型參數(shù)。last_checkpoint.pdckpt最近一次完整訓(xùn)練狀態(tài)?;謴?fù)訓(xùn)練示例defresume_training(checkpoint_path):modelClassifier()optimizerpaddle.optimizer.Adam(learning_rate0.01,parametersmodel.parameters(),)checkpointpaddle.load(checkpoint_path)model.set_state_dict(checkpoint[model])optimizer.set_state_dict(checkpoint[optimizer])start_epochcheckpoint[epoch]1best_val_acccheckpoint[best_val_acc]returnmodel,optimizer,start_epoch,best_val_acc繼續(xù)訓(xùn)練model,optimizer,start_epoch,best_val_accresume_training(last_checkpoint.pdckpt)forepochinrange(start_epoch,30):train_loss,train_acctrain_one_epoch(model,train_loader,optimizer)val_loss,val_accevaluate(model,val_loader)推理保存和訓(xùn)練恢復(fù)的區(qū)別推理只需要模型結(jié)構(gòu)代碼 模型參數(shù)繼續(xù)訓(xùn)練需要模型結(jié)構(gòu)代碼 模型參數(shù) 優(yōu)化器狀態(tài) 當(dāng)前 epoch 訓(xùn)練配置如果只加載模型參數(shù)訓(xùn)練也能繼續(xù)但 Adam 等優(yōu)化器內(nèi)部狀態(tài)會(huì)重新開(kāi)始訓(xùn)練軌跡可能和原來(lái)不一致。常見(jiàn)問(wèn)題問(wèn)題一模型結(jié)構(gòu)不一致保存時(shí)nn.Linear(2,16)加載時(shí)改成nn.Linear(2,32)參數(shù) shape 不匹配無(wú)法正確加載。問(wèn)題二只保存了模型忘記保存優(yōu)化器如果要完整恢復(fù)訓(xùn)練必須保存optimizer.state_dict()。問(wèn)題三加載后忘記 eval推理前model.eval()并配合withpaddle.no_grad():...問(wèn)題四覆蓋了最佳模型最佳模型和最后 checkpoint 最好分開(kāi)命名best_model.pdparams last_checkpoint.pdckpt問(wèn)題五沒(méi)有保存訓(xùn)練配置建議 checkpoint 中保存關(guān)鍵配置config:{hidden_dim:16,learning_rate:0.01,batch_size:64,}否則以后可能不知道該用什么結(jié)構(gòu)加載。文件命名建議常見(jiàn)后綴文件含義.pdparams模型參數(shù).pdopt優(yōu)化器狀態(tài).pdckpt自定義 checkpoint示例best_model.pdparams last_optimizer.pdopt epoch_010.pdckpt命名不影響 Paddle 讀取本質(zhì)上是你團(tuán)隊(duì)的約定。清晰比炫技重要。建議練習(xí)把訓(xùn)練恢復(fù)跑通訓(xùn)練 5 個(gè) epoch 后保存模型參數(shù)。新建同結(jié)構(gòu)模型加載參數(shù)并驗(yàn)證 accuracy。保存optimizer.state_dict()。保存完整 checkpoint包括 epoch 和 best_val_acc。從 checkpoint 恢復(fù)繼續(xù)訓(xùn)練到 10 個(gè) epoch。故意修改 hidden_dim觀察加載失敗信息??偨Y(jié)這一篇講了 Paddle 模型保存與加載model.state_dict()保存模型參數(shù)。model.set_state_dict()加載模型參數(shù)。optimizer.state_dict()保存優(yōu)化器狀態(tài)。最佳模型應(yīng)根據(jù)驗(yàn)證集指標(biāo)保存。完整恢復(fù)訓(xùn)練需要 checkpoint。推理前應(yīng)使用model.eval()和paddle.no_grad()。如果只能記住一句話那就是只做推理保存模型參數(shù)想完整恢復(fù)訓(xùn)練就必須同時(shí)保存模型、優(yōu)化器和訓(xùn)練進(jìn)度。

相關(guān)新聞

基于DeepSeek V4的企業(yè)級(jí)RAG系統(tǒng):從架構(gòu)設(shè)計(jì)到工程實(shí)踐

基于DeepSeek V4的企業(yè)級(jí)RAG系統(tǒng):從架構(gòu)設(shè)計(jì)到工程實(shí)踐

1. 項(xiàng)目緣起:從“玩具”到“工具”的RAG進(jìn)化之路最近幾個(gè)月,DeepSeek V4的發(fā)布在技術(shù)圈里激起了不小的水花。我身邊不少朋友,從獨(dú)立開(kāi)發(fā)者到中小企業(yè)的技術(shù)負(fù)責(zé)人,都在討論同一個(gè)問(wèn)題:如何把這種強(qiáng)大的通用大模型&…

2026/8/4 3:22:44 閱讀更多
Dify HTTP節(jié)點(diǎn)生產(chǎn)化實(shí)戰(zhàn):從連通到高可用的架構(gòu)演進(jìn)

Dify HTTP節(jié)點(diǎn)生產(chǎn)化實(shí)戰(zhàn):從連通到高可用的架構(gòu)演進(jìn)

1. 項(xiàng)目概述:當(dāng)Dify的HTTP節(jié)點(diǎn)不再是“玩具”如果你正在用Dify構(gòu)建智能體,并且已經(jīng)成功配置了HTTP節(jié)點(diǎn),讓它能調(diào)用你業(yè)務(wù)系統(tǒng)的某個(gè)API,比如查詢訂單狀態(tài)或者提交一個(gè)表單,那么恭喜你,你已經(jīng)邁出了關(guān)鍵的第…

2026/8/4 3:22:44 閱讀更多
無(wú)線電波譜全解析:從長(zhǎng)波到微波的傳播特性與應(yīng)用場(chǎng)景

無(wú)線電波譜全解析:從長(zhǎng)波到微波的傳播特性與應(yīng)用場(chǎng)景

1. 無(wú)線電波譜:從長(zhǎng)波到微波的認(rèn)知地圖如果你對(duì)收音機(jī)里不同波段的節(jié)目、手機(jī)信號(hào)的強(qiáng)弱,或者家里微波爐的工作原理感到好奇,那你其實(shí)已經(jīng)摸到了無(wú)線電波世界的門把手。我們身邊充斥著看不見(jiàn)的電磁波,它們按照頻率(或波…

2026/8/4 3:22:44 閱讀更多
Notion與AI代碼生成模型集成:構(gòu)建文檔即代碼環(huán)境實(shí)踐指南

Notion與AI代碼生成模型集成:構(gòu)建文檔即代碼環(huán)境實(shí)踐指南

如果你最近在關(guān)注 AI 助手領(lǐng)域,可能會(huì)發(fā)現(xiàn)一個(gè)有趣的現(xiàn)象:一邊是 Notion AI 作為“筆記管家”深入人心,另一邊是 Cursor、Claude 等“代碼專家”在開(kāi)發(fā)者中口碑爆棚。但有沒(méi)有一種可能,我們真正需要的不是一個(gè)“管家”或一個(gè)“專家…

2026/8/4 4:12:47 閱讀更多
SpringAl 基本概念

SpringAl 基本概念

1. Chat Model(聊天模型)SpringAl 把不同廠商的大模型統(tǒng)一成一個(gè)接口。OpenAL GptAnthropic ClaudeGoogle GeminiDeepSeek通義千問(wèn)Ollama本地模型以前java:OpenAI API Claude API DeepSeek API現(xiàn)在:ChatModel統(tǒng)一調(diào)用:String result chatCli…

2026/8/4 4:12:47 閱讀更多
Unity資源加載性能優(yōu)化:AssetBundle LZ4壓縮與Addressables實(shí)戰(zhàn)對(duì)比

Unity資源加載性能優(yōu)化:AssetBundle LZ4壓縮與Addressables實(shí)戰(zhàn)對(duì)比

1. 項(xiàng)目概述:為什么Unity資源加載值得深究?在Unity項(xiàng)目開(kāi)發(fā)中,尤其是涉及大量美術(shù)資源、復(fù)雜場(chǎng)景和頻繁內(nèi)容更新的游戲或應(yīng)用里,資源加載是性能表現(xiàn)的核心瓶頸之一。很多開(kāi)發(fā)者,包括我自己在早期,都曾天真地…

2026/8/4 4:12:47 閱讀更多
Spring Security自定義認(rèn)證:從默認(rèn)密碼到UserDetailsService實(shí)現(xiàn)詳解

Spring Security自定義認(rèn)證:從默認(rèn)密碼到UserDetailsService實(shí)現(xiàn)詳解

1. 項(xiàng)目概述:從“默認(rèn)密碼”到自定義認(rèn)證的必經(jīng)之路剛接觸Spring Security的朋友,十有八九都踩過(guò)同一個(gè)坑:項(xiàng)目一啟動(dòng),控制臺(tái)嘩啦啦打印出一串日志,其中赫然躺著一個(gè)“Using generated security password: xxxx”。然后…

2026/8/4 4:12:47 閱讀更多
隨機(jī)森林算法詳解——基于垃圾郵件分類案例

隨機(jī)森林算法詳解——基于垃圾郵件分類案例

一、從決策樹(shù)到隨機(jī)森林在前面的決策樹(shù)學(xué)習(xí)中,我們了解到?jīng)Q策樹(shù)是一種比較直觀的分類算法。它通過(guò)不斷尋找合適的特征,對(duì)數(shù)據(jù)進(jìn)行劃分,最終得到分類結(jié)果。例如垃圾郵件識(shí)別問(wèn)題:一封郵件可能包含:單詞出現(xiàn)次數(shù)特殊字符…

2026/8/4 4:12:47 閱讀更多
【限時(shí)公開(kāi)】某千億級(jí)AI平臺(tái)內(nèi)部《模型準(zhǔn)入白皮書(shū)V3.2》核心章節(jié):含17項(xiàng)硬性否決條款與5類高危場(chǎng)景熔斷機(jī)制

【限時(shí)公開(kāi)】某千億級(jí)AI平臺(tái)內(nèi)部《模型準(zhǔn)入白皮書(shū)V3.2》核心章節(jié):含17項(xiàng)硬性否決條款與5類高危場(chǎng)景熔斷機(jī)制

更多請(qǐng)點(diǎn)擊: https://codechina.net 第一章:AI模型選型指南 選擇合適的AI模型是構(gòu)建可靠智能系統(tǒng)的第一步。模型選型不僅影響推理性能與資源消耗,更直接關(guān)系到業(yè)務(wù)目標(biāo)的達(dá)成效果。需綜合考量任務(wù)類型、數(shù)據(jù)規(guī)模、延遲要求、部署環(huán)境及維護(hù)成…

2026/8/4 4:02:47 閱讀更多
清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級(jí)轉(zhuǎn)化為CeO?-石墨烯電催化劑!

清華大學(xué)重磅EST:植物自導(dǎo)電閃蒸焦耳熱600°C/2600°C兩步法!稀土超積累植物秒級(jí)轉(zhuǎn)化為CeO?-石墨烯電催化劑!

通訊作者:鄧兵、劉建國(guó)通訊單位:清華大學(xué)DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清潔能源技術(shù)與電子器件不可或缺的核心原料,然而傳統(tǒng)提取方式依賴能耗高、排放大的采礦與強(qiáng)…

2026/8/4 0:01:30 閱讀更多
貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計(jì)PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

貴州師范大學(xué)JCIS:混合焓調(diào)控設(shè)計(jì)PtCoNiCuCr高熵合金!ORR半波電位0.89 V/質(zhì)量活性2.4倍Pt/C!

研究背景質(zhì)子交換膜燃料電池(PEMFCs)因其高能量轉(zhuǎn)換效率和清潔零排放特性備受關(guān)注,然而陰極氧還原反應(yīng)(ORR)動(dòng)力學(xué)遲緩、鉑催化劑成本高昂且耐久性不足的問(wèn)題嚴(yán)重制約了其商業(yè)化進(jìn)程。將 Pt 與 3d 過(guò)渡金屬合金化可調(diào)控…

2026/8/4 0:01:30 閱讀更多
福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

福州大學(xué)/清華大學(xué)AFM:脈沖焦耳熱900°C/1s合成Co?Cu催化劑,寬電位NH?法拉第效率~100%,MEA穩(wěn)定300h

通訊作者:萬(wàn)宇馳、張久俊、呂瑞濤通訊單位:福州大學(xué) 、清華大學(xué)DOI:https://doi.org/10.1002/adfm.76112核心導(dǎo)讀:本文提出"分步升級(jí)"廢硝酸鹽處理新路線——利用廢水中的金屬離子經(jīng)快速焦耳熱(40V&#xff…

2026/8/4 0:01:30 閱讀更多
MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案

MoneyPrinterPlus實(shí)戰(zhàn)指南:AI視頻批量生成與自動(dòng)化發(fā)布完整解決方案 【免費(fèi)下載鏈接】MoneyPrinterPlus AI一鍵批量生成各類短視頻,自動(dòng)批量混剪短視頻,自動(dòng)把視頻發(fā)布到抖音,快手,小紅書(shū),視頻號(hào)上,賺錢從來(lái)沒(méi)有這么容易過(guò)! 支持本地語(yǔ)音模型chatTTS,fasterwhisper,…

2026/8/3 7:44:46 閱讀更多
3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南

3分鐘搞定!QQ空間歷史說(shuō)說(shuō)完整備份終極指南 【免費(fèi)下載鏈接】GetQzonehistory 獲取QQ空間發(fā)布的歷史說(shuō)說(shuō) 項(xiàng)目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾想過(guò),那些年發(fā)過(guò)的QQ空間說(shuō)說(shuō),那些記錄青春的文字…

2026/8/3 12:53:38 閱讀更多
AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O 分配 PCB

AMAT 0100-02186 I/O分配PCB板是應(yīng)用材料(Applied Materials)公司生產(chǎn)的一款用于半導(dǎo)體設(shè)備的I/O信號(hào)分配電路板。該型號(hào)(0100-02186)的核心特點(diǎn)如下:專用于Endura等半導(dǎo)體工藝腔室。集成信號(hào)路由與分配功能。連接控制…

2026/8/3 19:34:52 閱讀更多
Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)

Nissei Corp FFMN-32L-10-T0 40AX 三相異步電動(dòng)機(jī)是日本日清(Nissei)品牌的一款工業(yè)用三相異步電機(jī),適用于自動(dòng)化設(shè)備及通用機(jī)械驅(qū)動(dòng)。該型號(hào)(FFMN-32L-10-T0 40AX)的核心特點(diǎn)如下:三相交流異步電動(dòng)機(jī)。額定…

2026/8/3 19:34:54 閱讀更多