我在学习TensorFlow的一个教程,在模型预测阶段遇到了问题。
代码的最后部分是这样的:
import cv2import tensorflow as tfCATEGORIES = ["bishopB", "bishopW", "empty", "kingB", "kingW", "knightB", "knightW", "pawnB", "pawnW", "queenB", "queenW", "rookB", "rookW"]def prepare(file): IMG_SIZE = 50 img_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")image = "test.jpg" #your image pathprediction = model.predict([image])prediction = list(prediction[0])print(CATEGORIES[prediction.index(max(prediction))])
这应该可以让我根据文件输入得到预测结果。
然而,当我运行时,出现了以下错误:
prediction = model.predict([image]) File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training.py", line 1060, in predict x, check_steps=True, steps_name='steps', steps=steps) File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training.py", line 2651, in _standardize_user_data exception_prefix='input') File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training_utils.py", line 334, in standardize_input_data standardize_single_array(x, shape) for (x, shape) in zip(data, shapes) File "/Users/stuff/Library/Python/2.7/lib/python/site-packages/tensorflow/python/keras/engine/training_utils.py", line 265, in standardize_single_array if (x.shape is not None and len(x.shape) == 1 andAttributeError: 'str' object has no attribute 'shape'
有谁能帮我理解我在这里做错了什么吗?我认为它甚至没有开始处理我的测试图像。
回答:
你的 image
应该使用 prepare_file(img_path)
而不是直接使用字符串。