[英]Keras how to evaluate a single image once model has been fit
我現在只是在學習 Keras,我按照教程創建了一個圖像分類 model,它非常好並且運行良好。
然而,現在我想更進一步,一次給它一張圖像,讓它嘗試對其進行分類。 我認為這在概念上應該相當簡單,但我可能誤解了一些基本的東西。
所以這是我的 model:
model = Sequential()
model.add(Conv2D(32,(3,3), input_shape=x_train.shape[1:], padding='same'))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(BatchNormalization())
model.add(Conv2D(64, (3,3), padding='same'))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Dropout(.2))
model.add(BatchNormalization())
因此,當我運行它時,我還使用了:
model.save_weights('cif_weights.h5')
model.save('cif_model.h5')
現在我想將這些重新加載到不同的腳本中,讓它加載單個圖像,對其進行分類並吐出它認為的內容。
我最初以為您會使用 model.evaluate(xtest, ytest) 並且只是 xtest 數據和 ytest 數據的 1 個圖像,但這給了我 1 個損失和 1 個 model 整體的准確性,並沒有告訴我實際分類。
作為參考,我使用 CIFAR-10 數據集進行訓練,所以它是這 10 個不同的類。
如果有人能指出我解釋的地方,甚至在 Keras 文檔中。
如果我誤解了您的問題,我深表歉意,但我解釋您是在詢問如何將訓練並保存的 model 'cif_weights.h5' 加載到另一個 python 腳本中,您在該腳本中加載圖像並使用所述 Z20F35E630DAF44DBFA84ZC 分類3F
使用您的 model,確保將load_model從 keras 導入到您的新腳本中。
接下來,獲取您要預測的圖像,並使其具有與網絡接受的相同的尺寸。
因此,假設您的網絡在 50x50 像素的圖像上進行了訓練,您必須將圖像轉換為 1x50x50 的 numpy 數組。
這可以通過首先加載要預測的圖像來完成,比如變量是img ,它是一個 100x100 numpy 數組。 利用:
img.reshape(50,50) # replace 50,50 with whatever dimensions your network was trained on
然后向數組添加第一個維度:
img = img[numpy.newaxis,:,:]
然后最后你可以加載你的 model 並做出預測:
model=load_model('cif_weights.h5')
prediction = model.predict(img)
我們得到的這個新“預測”將是一個長度為 10 的向量,代表 model 預測您的新圖像分類是什么。 如果你想直接找到這個圖像上的權重預測,你可以使用
numpy.argmax(prediction)
這將返回網絡根據當前權重預測圖像所屬的 class。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.