我從頭開始創(chuàng)建了一個 TensorFlow CNN 來識別某些類型的動物。我相信該模型正在運行,因為我正在獲取有關(guān)訓(xùn)練數(shù)據(jù)的數(shù)據(jù),并且在運行代碼時在我的目錄中看到了一個新文件夾。當(dāng)我嘗試運行代碼以針對下方的新單張圖像進(jìn)行預(yù)測時,出現(xiàn)此錯誤。我是 TensorFlow 的新手,所以我不確定自己做錯了什么。該圖像位于主目錄中,是一個 .jpg 圖像。如果您需要更多信息,請與我們聯(lián)系。謝謝CATEGORIES = ["cane", "cavallo", "elefante", "farfalla", "gallina", "gatto", "mucca", "pecora", "ragno", "scoiattolo"]def prepare(file):IMG_SIZE = 50img_array = cv2.imread(file, cv2.IMREAD_GRAYSCALE)new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE))return new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 1)model = tf.keras.models.load_model("CNN.model")from PIL import Imageimport numpy as npfrom skimage import transformimage = load('test.jpg')model.predict(image)prediction = model.predict([image])prediction = list(prediction[0])print(CATEGORIES[prediction.index(max(prediction))])
2 回答

暮色呼如
TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊
我想你只是忘了應(yīng)用你的 def 準(zhǔn)備(文件)。
你能試一下嗎
model.predict(prepare(image))
這就是為什么 RGB 和預(yù)期的灰度不匹配的原因。因為你加載它的方式,它是 RGB,因為你的準(zhǔn)備功能沒有應(yīng)用。應(yīng)用后,它應(yīng)該是一個灰度圖像并且應(yīng)該可以工作。

牧羊人nacy
TA貢獻(xiàn)1862條經(jīng)驗 獲得超7個贊
所以錯誤很明顯。
expected axis -1 of input shape to have value 1 but received input with shape [None, 256, 256, 3]
該錯誤表明提供給模型的輸入通道是3
由于RGB
image 但您的模型需要帶有 channel 的圖像1
。
這意味著您的模型需要一張grayscale
圖像,而您在預(yù)測時提供了一張RGB
圖像。
您應(yīng)該提供一個圖像,[None, 256, 256, 1]
其中None
代表batch_size
。
您能否通過添加型號代碼來確認(rèn)這一點?
更新:
你剛剛更新了你的問題,所以在這里我可以看到你正在用灰度圖像訓(xùn)練你的模型。
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
但我認(rèn)為當(dāng)predicting
您使用 RGB 圖像調(diào)用時。
添加回答
舉報
0/150
提交
取消