好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > 聊聊pytorch測試的時候為何要加上model.eval()

聊聊pytorch測試的時候為何要加上model.eval()

熱門標簽:沈陽人工外呼系統價格 江西省地圖標注 富錦商家地圖標注 池州外呼調研線路 沈陽防封電銷卡品牌 如何申請400電話費用 武漢外呼系統平臺 沈陽外呼系統呼叫系統 外呼系統哪些好辦

Do need to use model.eval() when I test?

Sure, Dropout works as a regularization for preventing overfitting during training.

It randomly zeros the elements of inputs in Dropout layer on forward call.

It should be disabled during testing since you may want to use full model (no element is masked)

使用PyTorch進行訓練和測試時一定注意要把實例化的model指定train/eval,eval()時,框架會自動把BN和DropOut固定住,不會取平均,而是用訓練好的值,不然的話,一旦test的batch_size過小,很容易就會被BN層導致生成圖片顏色失真極大!!!!!!

補充:pytorch中model eval和torch no grad()的區別

model.eval()和with torch.no_grad()的區別

在PyTorch中進行validation時,會使用model.eval()切換到測試模式,在該模式下,

主要用于通知dropout層和batchnorm層在train和val模式間切換

在train模式下,dropout網絡層會按照設定的參數p設置保留激活單元的概率(保留概率=p); batchnorm層會繼續計算數據的mean和var等參數并更新。

在val模式下,dropout層會讓所有的激活單元都通過,而batchnorm層會停止計算和更新mean和var,直接使用在訓練階段已經學出的mean和var值。

該模式不會影響各層的gradient計算行為,即gradient計算和存儲與training模式一樣,只是不進行反傳(backprobagation)

而with torch.no_grad()則主要是用于停止autograd模塊的工作,以起到加速和節省顯存的作用,具體行為就是停止gradient計算,從而節省了GPU算力和顯存,但是并不會影響dropout和batchnorm層的行為。

使用場景

如果不在意顯存大小和計算時間的話,僅僅使用model.eval()已足夠得到正確的validation的結果;而with torch.zero_grad()則是更進一步加速和節省gpu空間(因為不用計算和存儲gradient),從而可以更快計算,也可以跑更大的batch來測試。

補充:Pytorch的modle.train,model.eval,with torch.no_grad的個人理解

1. 最近在學習pytorch過程中遇到了幾個問題

不理解為什么在訓練和測試函數中model.eval(),和model.train()的區別,經查閱后做如下整理

一般情況下,我們訓練過程如下:

1、拿到數據后進行訓練,在訓練過程中,使用

model.train():告訴我們的網絡,這個階段是用來訓練的,可以更新參數。

2、訓練完成后進行預測,在預測過程中,使用

model.eval() : 告訴我們的網絡,這個階段是用來測試的,于是模型的參數在該階段不進行更新。

2. 但是為什么在eval()階段會使用with torch.no_grad()?

查閱相關資料:傳送門

with torch.no_grad - disables tracking of gradients in autograd.

model.eval() changes the forward() behaviour of the module it is called upon

eg, it disables dropout and has batch norm use the entire population statistics

總結一下就是說,在eval階段了,即使不更新,但是在模型中所使用的dropout或者batch norm也就失效了,直接都會進行預測,而使用no_grad則設置讓梯度Autograd設置為False(因為在訓練中我們默認是True),這樣保證了反向過程為純粹的測試,而不變參數。

另外,參考文檔說這樣避免每一個參數都要設置,解放了GPU底層的時間開銷,在測試階段統一梯度設置為False

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

您可能感興趣的文章:
  • 解決Pytorch中的神坑:關于model.eval的問題
  • pytorch:model.train和model.eval用法及區別詳解
  • 解決BN和Dropout共同使用時會出現的問題

標簽:黑龍江 常德 株洲 呂梁 銅川 潛江 通遼 阿里

巨人網絡通訊聲明:本文標題《聊聊pytorch測試的時候為何要加上model.eval()》,本文關鍵詞  聊聊,pytorch,測試,的,時候,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《聊聊pytorch測試的時候為何要加上model.eval()》相關的同類信息!
  • 本頁收集關于聊聊pytorch測試的時候為何要加上model.eval()的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: chinaxxxx| 伊甸园精品99久久久久久| 国产一国产一级毛片视频| 国产亚洲午夜精品一区二区在线| 天天看天天碰| 午夜精品亚洲| 私密SPA按摩按到高潮| 野花视频在线观看高清免费完整版 | 九色PORNY丨国产精品| 青娱乐九色| 国产精品大尺度尺度视频| 色戒2小时38分无删减版网盘| 久久这里| 国产做受???高潮久久Yo| 国产精品刺激对白51| 电影《花芯》的剧情简介| 精品亚洲AV无码国产| 野花视频高清手机免费观看| 欲海记高h| 97久久久碰碰碰人妻A片蜜臀| 美女被摸胸动漫| 高潮娇喘抽搐无力呻吟在线视频| japanesevideo喷潮| 天天草影院| 中国少妇婬乱一级A片春光| 91人摸人人澡人人人超一碰| 黄色软件网站大全| 午夜精品视频在线看| 很黄很色的波波视频| 各类女厕正面偷拍精品| 久久婷婷五月综合国产尤物APP | 18学生无套内精网站| 成人综合激情| 天堂中文在线最新版地址| 日本免费一级| 久久久亚洲精品SYS84| 女人高潮潮呻吟喷水到几根| 国产a网| a级毛片毛片免费观看久潮| 港台P片激情久久| 九九九中文无码AV在线播放|