解決Pytorch在測(cè)試與訓(xùn)練過(guò)程中的驗(yàn)證結(jié)果不一致問(wèn)題
引言
今天在使用Pytorch導(dǎo)入此前保存的模型進(jìn)行測(cè)試,在過(guò)程中發(fā)現(xiàn)輸出的結(jié)果與驗(yàn)證結(jié)果差距甚大,經(jīng)過(guò)排查后發(fā)現(xiàn)是forward與eval()順序問(wèn)題。
現(xiàn)象
此前的錯(cuò)誤代碼是
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()
應(yīng)該改為
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) # 先f(wàn)orward再eval model.forward() model.eval()
當(dāng)時(shí)有個(gè)疑慮,為什么要在forward后面再加eval(),查了下相關(guān)資料,主要是在BN層以及Dropout的問(wèn)題。
當(dāng)使用eval()時(shí),模型會(huì)自動(dòng)固定BN層以及Dropout,選取訓(xùn)練好的值,否則則會(huì)取平均,可能導(dǎo)致生成的圖片顏色失真。
PyTorch進(jìn)行訓(xùn)練和測(cè)試時(shí)一定注意要把實(shí)例化的model指定train/eval
使用PyTorch進(jìn)行訓(xùn)練和測(cè)試時(shí)一定注意要把實(shí)例化的model指定train/eval,eval()時(shí),框架會(huì)自動(dòng)把BN和DropOut固定住,不會(huì)取平均,而是用訓(xùn)練好的值,不然的話,一旦test的batch_size過(guò)小,很容易就會(huì)被BN層導(dǎo)致生成圖片顏色失真極大?。。。。?!
eg:
Class Inpaint_Network() ...... Model = Inpaint_Nerwoek() #train: Model.train(mode=True) ..... #test: Model.eval()
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python解決網(wǎng)站的反爬蟲(chóng)策略總結(jié)
網(wǎng)站做了很多反爬蟲(chóng)工作,爬起來(lái)有些艱難,本文詳細(xì)介紹了python解決網(wǎng)站的反爬蟲(chóng)策略,有需要的小伙伴可以參考下。2016-10-10tensorflow可視化Keras框架中Tensorboard使用示例
這篇文章主要為大家介紹了tensorflow可視化Keras框架中Tensorboard使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python處理multipart/form-data的請(qǐng)求方法
今天小編就為大家分享一篇python處理multipart/form-data的請(qǐng)求方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-12-12Python對(duì)象類型及其運(yùn)算方法(詳解)
下面小編就為大家?guī)?lái)一篇Python對(duì)象類型及其運(yùn)算方法(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07使用Python實(shí)現(xiàn)生成對(duì)角矩陣和對(duì)角塊矩陣
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)生成對(duì)角矩陣和對(duì)角塊矩陣,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01python cx_Oracle模塊的安裝和使用詳細(xì)介紹
這篇文章主要介紹了python cx_Oracle模塊的安裝和使用詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2017-02-02python sorted函數(shù)的小練習(xí)及解答
這篇文章主要介紹了python sorted函數(shù)的小練習(xí)及解答,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09