簡體   English   中英

Keras 如何在 model 擬合后評估單個圖像

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM