我從頭開始創建了一個 TensorFlow CNN 來識別某些類型的動物。我相信該模型正在運行,因為我正在獲取有關訓練數據的數據,并且在運行代碼時在我的目錄中看到了一個新文件夾。當我嘗試運行代碼以針對下方的新單張圖像進行預測時,出現此錯誤。我是 TensorFlow 的新手,所以我不確定自己做錯了什么。該圖像位于主目錄中,是一個 .jpg 圖像。如果您需要更多信息,請與我們聯系。謝謝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貢獻1853條經驗 獲得超9個贊
我想你只是忘了應用你的 def 準備(文件)。
你能試一下嗎
model.predict(prepare(image))
這就是為什么 RGB 和預期的灰度不匹配的原因。因為你加載它的方式,它是 RGB,因為你的準備功能沒有應用。應用后,它應該是一個灰度圖像并且應該可以工作。

牧羊人nacy
TA貢獻1862條經驗 獲得超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
圖像,而您在預測時提供了一張RGB
圖像。
您應該提供一個圖像,[None, 256, 256, 1]
其中None
代表batch_size
。
您能否通過添加型號代碼來確認這一點?
更新:
你剛剛更新了你的問題,所以在這里我可以看到你正在用灰度圖像訓練你的模型。
X = np.array(X).reshape(-1, IMG_SIZE, IMG_SIZE, 1)
但我認為當predicting
您使用 RGB 圖像調用時。
添加回答
舉報
0/150
提交
取消