這次展示下孿生網(wǎng)絡(luò)的模型訓(xùn)練示例,先看下使用的數(shù)據(jù):
數(shù)據(jù)使用的是att_faces人臉數(shù)據(jù)辩恼,共40人惕橙,每人10張照片瞧甩,我們最終的預(yù)測(cè)目標(biāo)是根據(jù)一張人臉,找到其最相似的多張圖片弥鹦。
上述代碼是對(duì)樣本的處理肚逸,init函數(shù)中我們從樣本文件中提取所有樣本信息,這里包括兩張圖片的路徑彬坏,以及l(fā)abel(0=同一人朦促,1=不同人),getitem則是對(duì)每個(gè)樣本進(jìn)行處理栓始,主要是圖像的各種變換處理务冕。
這是模型的網(wǎng)絡(luò)層,其中包含4個(gè)卷積層幻赚、2個(gè)全連接層禀忆,代碼中有具體注釋。
這是損失函數(shù)落恼,由于是孿生網(wǎng)絡(luò)箩退,所以對(duì)比的是兩張圖片的距離。
上述就是主要的處理函數(shù)领跛,下面看下訓(xùn)練代碼:
這里大致說(shuō)一下邏輯乏德,每個(gè)epoch是一個(gè)完整樣本集的訓(xùn)練,每次訓(xùn)練用一個(gè)batch_size的數(shù)據(jù)集進(jìn)行模型參數(shù)更新吠昭,這里在每次epoch后會(huì)對(duì)測(cè)試集進(jìn)行損失計(jì)算喊括,并根據(jù)訓(xùn)練集和測(cè)試集損失函數(shù)變換確定最終的epoch。
這是訓(xùn)練50個(gè)epoch后每個(gè)epoch對(duì)應(yīng)的訓(xùn)練集和測(cè)試集損失函數(shù)值矢棚,從圖中9以后測(cè)試集不再變小郑什,訓(xùn)練集減小幅度也很小了,這里就取epoch=8為當(dāng)前的最優(yōu)值蒲肋。
本節(jié)內(nèi)容就這些蘑拯,想下載源碼的可以微信公眾號(hào)回復(fù):孿生網(wǎng)絡(luò)模型訓(xùn)練
公眾號(hào)名稱:桔子的算法之路