keras進行圖像分類時遇到的小問題


Q1:由於網速慢或者網絡中斷等原因,導致keras加載VGG16等模型權重失敗,從而程序出錯。

方法:可以直接刪除,重新下載。

Keras-Github-教程
https://github.com/fchollet/deep-learning-models
原始權重下載地址
https://github.com/fchollet/deep-learning-models/releases
tf模型權重百度雲下載地址
http://pan.baidu.com/s/1dE9giOD

注:1.從百度雲盤下載權重文件最快

  2.刪除文件時,采用 $ open .keras/models/  ,進入隱藏的文件夾,然后刪除。(mac系統)

 

Q2:如何離線讀取VGG16的訓練權重。

方法:以個人為例,

model = applications.VGG16(include_top=False,

                       weights='/Users/******/.keras/models/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5')

其中,******是自己電腦的賬號名;vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5 是VGG16的權重文件;這樣就可以離線讀取VGG16的訓練權重了。

 

Q3: model.add(Flatten(input_shape=train_data.shape[1:])),這句話的理解。(僅在圖像識別這一塊)

如果輸入train_data.shape[0:],它會輸出這樣一個東西:[x1 , x2 , x3 , x4],其中x1表示樣本數,x2表示圖寬度,x3表示圖高度,x4表示通道數。一般來說,樣本數是不好指定的,所以一般只讀取train_data.shape[1:]。(在tensorflow下如此,在theano中,4個含義的順序好像不是這樣。)

 

Q4: ValueError: Error when checking target: expected dense_2 to have shape (None, 3) but got array with shape (150, 1)

原因:當初自己出錯是因為圖形的標簽是3類,我在 train_labels = np.array([0] * 1000 + [1] * 1000 + [2] * 1000) 操作之后,並沒有將它分成3類,即生成3維,

需要加上這樣一句代碼 train_labels = np_utils.to_categorical(train_labels, 3),此外相應的,要加上 from keras.utils import np_utils

 

Q5: for layer in model.layers[:15]:
    layer.trainable = False

這句話是指將模型的前15層冰凍住,也就是在訓練網絡的過程中,前15層的網絡參數始終不發生變化。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM