pytorch通過(guò)訓(xùn)練結(jié)果的復(fù)現(xiàn)設(shè)置隨機(jī)種子
通過(guò)設(shè)置全局隨機(jī)種子使得每次的訓(xùn)練結(jié)果相同可以復(fù)現(xiàn)
def seed_torch(seed=2018):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
這里我主要講一下模型在復(fù)現(xiàn)結(jié)果遇到的一些問(wèn)題。
首先在固定隨機(jī)種子之后,每次模型訓(xùn)練出來(lái)的結(jié)果一定是一樣的,如果不相同,那么說(shuō)明訓(xùn)練過(guò)程中一定還有一部分隨機(jī)性操作沒(méi)有被固定。
將模型參數(shù)保存下來(lái),然后加載模型參數(shù)進(jìn)行測(cè)試,如果發(fā)現(xiàn)結(jié)果和訓(xùn)練過(guò)程中得到的結(jié)果有差異。
這個(gè)時(shí)候就需要按照以下步驟進(jìn)行分析:
1、先改變batchsize,看看實(shí)驗(yàn)復(fù)現(xiàn)的結(jié)果是否會(huì)發(fā)生變化。如果發(fā)生變化就說(shuō)明batchsize會(huì)影響模型推理過(guò)程中的參數(shù)。
2、檢查一下forward中有哪些參數(shù)跟batchsize有關(guān),或者是不是代碼寫錯(cuò)了。比如batchsize就會(huì)影響LSTM的模型參數(shù)的初始化。
3、最后檢查測(cè)試集劃分batch的時(shí)候是否都一樣。
test_loader = DataLoader(test_dataset, batch_size=batchsize, shuffle=True, num_workers=4, pin_memory=True)
比如這樣一行代碼,測(cè)試集每次都被打亂了,雖然固定了隨機(jī)種子,但是這樣只能保證第k輪的隨機(jī)種子是一樣的,而第1輪和第10輪的隨機(jī)種子是不一樣的。
這樣的話,比如模型在第13個(gè)epoch收斂,得到的結(jié)果在是第13輪的測(cè)試集進(jìn)行測(cè)試的,而模型在加載的時(shí)候是在第一輪的測(cè)試進(jìn)行測(cè)試的,結(jié)果自然有差異。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python代碼實(shí)現(xiàn)小程序登錄流程時(shí)序總結(jié)
這篇文章主要為大家介紹了python代碼實(shí)現(xiàn)小程序的登錄案例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
推薦10款最受Python開(kāi)發(fā)者歡迎的Python IDE
這篇文章收集了一些對(duì)開(kāi)發(fā)者非常有幫助的,最好的10款Python IDE,包括Vim,Eclipse with PyDev,Sublime Text,PyCharm等知明Python開(kāi)發(fā)工具2018-09-09
Django執(zhí)行源生mysql語(yǔ)句實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Django執(zhí)行源生mysql語(yǔ)句實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
解決keras模型保存h5文件提示無(wú)此目錄問(wèn)題
這篇文章主要介紹了解決keras模型保存h5文件提示無(wú)此目錄問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
Python將圖片批量從png格式轉(zhuǎn)換至WebP格式
最近因?yàn)楣ぷ餍枰パ芯苛讼聀ng的壓縮,發(fā)現(xiàn)轉(zhuǎn)換成webp格式可以小很多,下面給大家分享利用Python將圖片批量從png格式轉(zhuǎn)換至WebP格式的方法,下面來(lái)一起看看。2016-08-08
python數(shù)據(jù)寫入列表并導(dǎo)出折線圖
這篇文章主要介紹了python數(shù)據(jù)寫入列表并導(dǎo)出折線圖,文章以舉例展開(kāi)對(duì)文章主題的介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-01-01
python獲取word文檔總頁(yè)數(shù)的兩種方法
這篇文章主要介紹了python獲取word文檔的總頁(yè)數(shù)的兩種方法,文中給出了兩種解決方案,兩種方案也都各有優(yōu)缺點(diǎn),可能也不一定是完全準(zhǔn)確的,需要的朋友可以參考下2024-03-03
python 模擬貸款卡號(hào)生成規(guī)則過(guò)程解析
這篇文章主要介紹了python 模擬貸款卡號(hào)生成規(guī)則過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08
Python數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)代碼示例解析
這篇文章主要介紹了Python數(shù)據(jù)庫(kù)封裝實(shí)現(xiàn)代碼示例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09

