在keras中對單一輸入圖像進行預(yù)測并返回預(yù)測結(jié)果操作
模型經(jīng)過訓(xùn)練測試之后,我們往往用一兩張圖對模型預(yù)測結(jié)果進行分析討論,那么下面介紹在keras中用已訓(xùn)練的模型經(jīng)過測試的方法。
下面是以利用預(yù)訓(xùn)練的ResNet來展示預(yù)測的效果,選了一張狗的圖片,是來自一個kaggle比賽的。
預(yù)測結(jié)果第一個是一種蘇格蘭品種的狗,我也不知道準不準 == 。

import numpy as np
from keras.applications.imagenet_utils import decode_predictions
from keras.preprocessing import image
from keras.applications import *
import os
# 忽略硬件加速的警告信息
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
file_path = 'images/0a70f64352edfef4c82c22015f0e3a20.jpg'
img = image.load_img(file_path, target_size=(224, 224))
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
model = ResNet50(weights='imagenet')
y = model.predict(x)
# print(np.argmax(y))
print('Predicted:', decode_predictions(y, top=3)[0])
講幾點:
1.輸入img轉(zhuǎn)成numpy數(shù)組,shape處理成(224,224,3)一般來講,對于預(yù)訓(xùn)練模型是有一個最小的尺寸值,比最小尺寸大就可以了。在ResNet中,尺寸最小大于等于197即可。
2.要對輸入shape擴維變成(None,224,224,3),第一個None是batches,模型并不知道你輸入的batches是多少,但是維度必須和ResNet的輸入要一致。
3.雖然用的是ResNet,自己設(shè)計的模型也一個道理,保留一下訓(xùn)練的權(quán)重,把model模塊和預(yù)測模塊分開寫,這個時候load一下權(quán)重,再預(yù)測即可。
補充知識:keras:怎樣使用 fit_generator 來訓(xùn)練多個不同類型的輸出
這個例子非常簡單明了,模型由1個輸入,2個輸出,兩個輸出的分支分別使用MSE作為損失。
x = Convolution2D(8, 5, 5, subsample=(1, 1))(image_input)
x = Activation('relu')(x)
x = Flatten()(x)
x = Dense(50, W_regularizer=l2(0.0001))(x)
x = Activation('relu')(x)
output1 = Dense(1, activation='linear', name='output1')(x)
output2 = Dense(1, activation='linear', name='output2')(x)
model = Model(input=image_input, output=[output1, output2])
model.compile(optimizer='adam', loss={'output1': 'mean_squared_error', 'output2': 'mean_squared_error'})
產(chǎn)生訓(xùn)練數(shù)據(jù)的生成器,這里y=[y1,y2].
batch_generator(x, y, batch_size):
....transform images
....generate batch batch of size: batch_size
yield(X_batch, {'output1': y1, 'output2': y2} ))
之后,調(diào)用fit_generator
model.fit_generator(batch_generator(X_train, y_train, batch_size))
原問題鏈接。
以上這篇在keras中對單一輸入圖像進行預(yù)測并返回預(yù)測結(jié)果操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
使用Python中的Playwright制作測試視頻的實現(xiàn)步驟
Playwright 是一種流行的用于測試 Web 應(yīng)用程序的自動化工具,它提供了多種功能來使測試更加高效和可靠,這些功能之一是能夠捕獲測試運行的視頻,在此博客中,田辛老師將探索如何使用 Python 中的 Playwright 制作測試視頻,感興趣的同學可以參考本文自己動手嘗試2023-10-10
Python?Matplotlib實現(xiàn)三維數(shù)據(jù)的散點圖繪制
這篇文章主要為大家詳細介紹了Python?Matplotlib實現(xiàn)三維數(shù)據(jù)的散點圖繪制,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-03-03
Python turtle繪圖教程之七段數(shù)碼管顯示數(shù)字和字母
這篇文章主要給大家介紹了關(guān)于Python turtle繪圖教程之七段數(shù)碼管顯示數(shù)字和字母的相關(guān)資料,Python是一種流行的編程語言,可用于編寫各種類型的程序,在數(shù)碼管顯示器上數(shù)字8由7條不同的線條組成,需要的朋友可以參考下2023-10-10
Python中的異常處理相關(guān)語句基礎(chǔ)學習筆記
這里我們簡單整理一下Python中的異常處理相關(guān)語句基礎(chǔ)學習筆記,包括try...except與assert等基本語句的用法講解:2016-07-07

