五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

PyTorch dropout設置訓練和測試模式的實現(xiàn)

發(fā)布日期:2022-04-04 13:50 | 文章來源:源碼中國

看代碼吧~

class Net(nn.Module):
…
model = Net()
…
model.train() # 把module設成訓練模式,對Dropout和BatchNorm有影響
model.eval() # 把module設置為預測模式,對Dropout和BatchNorm模塊有影響

補充:Pytorch遇到的坑——訓練模式和測試模式切換

由于訓練的時候Dropout和BN層起作用,每個batch BN層的參數(shù)不一樣,dropout在訓練時隨機失效點具有隨機性,所以訓練和測試要區(qū)分開來。

使用時切記要根據(jù)實際情況切換:

model.train()
model.eval()

補充:Pytorch在測試與訓練過程中的驗證結果不一致問題

引言

今天在使用Pytorch導入此前保存的模型進行測試,在過程中發(fā)現(xiàn)輸出的結果與驗證結果差距甚大,經過排查后發(fā)現(xiàn)是forward與eval()順序問題。

現(xiàn)象

此前的錯誤代碼是

 input_cpu = torch.ones((1, 2, 160, 160))
 target_cpu =torch.ones((1, 2, 160, 160))
 target_gpu, input_gpu = target_cpu.cuda(), input_cpu.cuda()
 model.set_input_2(input_gpu, target_gpu)
 model.eval()
 model.forward()

應該改為

 input_cpu = torch.ones((1, 2, 160, 160))
 target_cpu =torch.ones((1, 2, 160, 160))
 target_gpu, input_gpu = target_cpu.cuda(), input_cpu.cuda()
 model.set_input_2(input_gpu, target_gpu)
 # 先forward再eval
 model.forward()
 model.eval()

當時有個疑慮,為什么要在forward后面再加eval(),查了下相關資料,主要是在BN層以及Dropout的問題。當使用eval()時,模型會自動固定BN層以及Dropout,選取訓練好的值,否則則會取平均,可能導致生成的圖片顏色失真。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持本站。

國外穩(wěn)定服務器

版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。

相關文章

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務

7x24全年不間斷在線

專屬顧問服務

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務熱線

關注
微信

關注官方微信
頂部