人工智能學(xué)習(xí)pyTorch自建數(shù)據(jù)集及可視化結(jié)果實(shí)現(xiàn)過程
一、自定義數(shù)據(jù)集
現(xiàn)有數(shù)據(jù)如下:
5個(gè)文件夾,每個(gè)文件夾是神奇寶貝的一種。
每個(gè)圖片形狀、大小、格式不一。
我們訓(xùn)練CNN的時(shí)候需要的是tensor類型的數(shù)據(jù),因此需要將所有的圖片進(jìn)行下列轉(zhuǎn)換:
1.對(duì)文件夾編號(hào),進(jìn)行映射,比如妙蛙種子文件夾編號(hào)0,皮卡丘編號(hào)1等。
2.對(duì)文件夾中所有圖片,進(jìn)行編號(hào)的對(duì)應(yīng),這個(gè)就是標(biāo)簽。并保存為一個(gè)csv文件。
3.圖片信息獲?。悍譃閠rain,val,test
4.處理圖片,使其成為torch可以處理的類型
1.文件夾映射
前半部分為文件夾的映射。我們希望傳入數(shù)據(jù)的時(shí)候直接傳入文件夾的名字,而文件夾所在的路徑就是py文件所在的路徑,因此這樣可以直接讀取。對(duì)于路徑的操作使用os.path.join進(jìn)行。
2.圖片對(duì)應(yīng)標(biāo)簽
輸入的filename,就是我們將圖片和標(biāo)簽信息存儲(chǔ)的文件。
使用glob.glob方法,可以輕松調(diào)取路徑下的所有指定類型的文件。
將名字和標(biāo)簽對(duì)應(yīng)好后,通過csv.writer,可以將信息以csv格式寫入新文件。
以上是保存的部分,在這個(gè)函數(shù)中,我們還要重新讀取一下這個(gè)文件,因?yàn)橐谶@個(gè)類中獲得最終的圖片,以及標(biāo)簽,并且返回。
3.訓(xùn)練及測(cè)試數(shù)據(jù)分割
這里是第一步的圖片的后半部分,導(dǎo)入了圖片之后,對(duì)其進(jìn)行分割,這里是按照訓(xùn)練、交叉驗(yàn)證、測(cè)試,分別是0.6,0.2,0.2進(jìn)行分割的。
分割完畢后的self.images, self.labels,就可以拿來進(jìn)行tensor相關(guān)的處理了。
4.數(shù)據(jù)處理
上面幾步是準(zhǔn)備工作,接下來定義的__getitem__是為了能夠使train_loader = DataLoader()這一語句實(shí)現(xiàn)。在這里面直接將數(shù)據(jù)進(jìn)行我們希望進(jìn)行的轉(zhuǎn)換。比如大小、旋轉(zhuǎn)、裁剪等。
最后返回處理好的圖片,以及tensor化的標(biāo)簽。
另外,還需要定義一個(gè)__len__,使得我們可以獲得數(shù)據(jù)集長(zhǎng)度。
二、ResNet處理
我們要用ResNet對(duì)圖片進(jìn)行處理,因此其中的參數(shù)需要進(jìn)行一定的修改。
主要的修改部分是ResNet18之中的resblock模塊。因?yàn)槲覀兿M斎氲氖?通道,224*224的圖片,因此在這里對(duì)通道,步長(zhǎng)進(jìn)行一定的修改,并進(jìn)行測(cè)試,成功之后便可以進(jìn)行訓(xùn)練了。
三、訓(xùn)練及可視化
1.數(shù)據(jù)集導(dǎo)入
同時(shí)把GPU設(shè)備相關(guān)代碼準(zhǔn)備好,并且由于需要可視化,因此先實(shí)例化visdom,并且在終端上輸入python -m visdom.server,打開visdom監(jiān)視終端。
2.測(cè)試函數(shù)
先把模式改為eval(),接下來就是通過model,去訓(xùn)練測(cè)試集,得到標(biāo)簽,并統(tǒng)計(jì)正確率。
3.訓(xùn)練過程及可視化
和之前的一樣,還是先實(shí)例化一個(gè)優(yōu)化器,選擇損失函數(shù)模式,實(shí)例化ResNet18,然后進(jìn)行訓(xùn)練。
在這里由于要展示,因此先對(duì)損失值,交叉驗(yàn)證分?jǐn)?shù)分別設(shè)置一個(gè)初始的線,通過append的方法,畫出我們的損失曲線,以及交叉驗(yàn)證分?jǐn)?shù)曲線。
通過torch.save方法存儲(chǔ)我們的最優(yōu)解。
最后通過把存儲(chǔ)好的最優(yōu)解調(diào)用起來,使用測(cè)試集,來測(cè)試最終的效果。
最終獲得的交叉驗(yàn)證準(zhǔn)確率89%,測(cè)試集準(zhǔn)確率88%,損失值及交叉驗(yàn)證結(jié)果的圖像如下:
以上就是人工智能學(xué)習(xí)pyTorch自建數(shù)據(jù)集及可視化結(jié)果實(shí)現(xiàn)過程的詳細(xì)內(nèi)容,更多關(guān)于pyTorch自建數(shù)據(jù)集及可視化結(jié)果實(shí)現(xiàn)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值
這篇文章主要為大家介紹了python環(huán)境下OPenCV處理視頻流局部區(qū)域像素值的實(shí)現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11pandas DataFrame 刪除重復(fù)的行的實(shí)現(xiàn)方法
這篇文章主要介紹了pandas DataFrame 刪除重復(fù)的行的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01Sklearn多種算法實(shí)現(xiàn)人臉補(bǔ)全的項(xiàng)目實(shí)踐
本文主要介紹了Sklearn多種算法實(shí)現(xiàn)人臉補(bǔ)全的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Python 安裝 virturalenv 虛擬環(huán)境的教程詳解
這篇文章主要介紹了Python 安裝 virturalenv 虛擬環(huán)境的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02