[英]How should I optimize neural network for image classification using pretrained models
感謝您查看我的問題。 我正在嘗試基於一些預先訓練的模型進行圖像分類,圖像應分為40類。 我想使用VGG和Xception預訓練模型將每個圖像轉換為兩個1000維向量,並將它們堆疊成1 * 2000維度向量作為我的網絡輸入,並且網絡具有40維輸出。 網絡有2個隱藏層,一個有1024個神經元,另一個有512個神經元。
結構:image-> vgg(1 * 1000維),xception(1 * 1000維) - >(1 * 2000維)作為輸入 - > 1024個神經元 - > 512個神經元 - > 40個維度輸出 - > softmax
但是,使用這種結構我只能達到約30%的准確度。 所以我的問題是,如何優化網絡結構以獲得更高的准確度? 我不熟悉深度學習所以我不確定我目前的設計是“正確的”。 我真的很期待你的建議
我不完全確定我理解你的網絡架構,但有些部分看起來並不適合我。
有兩種主要的轉學習方案:
ConvNet作為固定特征提取器 。 采用預訓練網絡(VGG和Xception中的任何一個都可以,不需要兩者),刪除最后一個完全連接的層(此層的輸出是針對ImageNet等不同任務的1000級分數),然后處理其余的ConvNet作為新數據集的固定特征提取器。 例如,在AlexNet中,這將為包含緊接在分類器之前的隱藏層的激活的每個圖像計算4096-D向量。 為所有圖像提取4096-D代碼后,為新數據集訓練線性分類器(例如線性SVM或Softmax分類器)。
提示#1:只接受一個預訓練網絡。
提示#2:您的分類器不需要多個隱藏層。
微調ConvNet 。 第二種策略是不僅在新數據集上替換和重新訓練ConvNet之上的分類器,而且還通過繼續反向傳播來微調預訓練網絡的權重。 可以微調ConvNet的所有層,或者可以保留一些早期層(由於過度擬合問題)並且僅微調網絡的某些更高級別部分。 這是因為觀察到ConvNet的早期特征包含更多通用特征(例如邊緣檢測器或顏色斑點檢測器),這些特征應該對許多任務有用,但后來的ConvNet層逐漸變得更加特定於類的細節。包含在原始數據集中。
提示#3:保持早期預訓練層固定。
提示#4:使用較小的學習速率進行微調,因為您不希望過快和過多地扭曲其他預訓練層。
這種架構更像我所看到的解決同樣問題的機構,並且具有更高的准確率。
當模型不合適時,您可以嘗試幾個步驟:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.