更新時間:2022-04-07 來源:黑馬程序員 瀏覽量:
如何在只有6萬張圖像的MNIST訓(xùn)練數(shù)據(jù)集上訓(xùn)練模型?學(xué)術(shù)界當下使用最廣泛的大規(guī)模圖像數(shù)據(jù)集ImageNet,它有超過1,000萬的圖像和1,000類的物體。然而,我們平常接觸到數(shù)據(jù)集的規(guī)模通常在這兩者之間。假設(shè)我們想從圖像中識別出不同種類的椅子,然后將購買鏈接推薦給用戶。一種可能的方法是先找出100種常見的椅子,為每種椅子拍攝1,000張不同角度的圖像,然后在收集到的圖像數(shù)據(jù)集上訓(xùn)練一個分類模型。另外一種解決辦法是應(yīng)用遷移學(xué)習(xí)(transfer
learning),將從源數(shù)據(jù)集學(xué)到的知識遷移到目標數(shù)據(jù)集上。例如,雖然ImageNet數(shù)據(jù)集的圖像大多跟椅子無關(guān),但在該數(shù)據(jù)集上訓(xùn)練的模型可以抽取較通用的圖像特征,從而能夠幫助識別邊緣、紋理、形狀和物體組成等。這些類似的特征對于識別椅子也可能同樣有效。
微調(diào)由以下4步構(gòu)成。
1.在源數(shù)據(jù)集(如ImageNet數(shù)據(jù)集)上預(yù)訓(xùn)練一個神經(jīng)網(wǎng)絡(luò)模型,即源模型。
2.創(chuàng)建一個新的神經(jīng)網(wǎng)絡(luò)模型,即目標模型。它復(fù)制了源模型上除了輸出層外的所有模型設(shè)計及其參數(shù)。我們假設(shè)這些模型參數(shù)包含了源數(shù)據(jù)集上學(xué)習(xí)到的知識,且這些知識同樣適用于目標數(shù)據(jù)集。我們還假設(shè)源模型的輸出層跟源數(shù)據(jù)集的標簽緊密相關(guān),因此在目標模型中不予采用。
3.為目標模型添加一個輸出大小為目標數(shù)據(jù)集類別個數(shù)的輸出層,并隨機初始化該層的模型參數(shù)。
4.在目標數(shù)據(jù)集(如椅子數(shù)據(jù)集)上訓(xùn)練目標模型。我們將從頭訓(xùn)練輸出層,而其余層的參數(shù)都是基于源模型的參數(shù)微調(diào)得到的。
當目標數(shù)據(jù)集遠小于源數(shù)據(jù)集時,微調(diào)有助于提升模型的泛化能力。
tf.keras怎樣實現(xiàn)深度學(xué)習(xí)?