我正在尝试从this website修改和调用我自己的模型。
但我的问题是。
def prepare(filepath):
IMG_SIZE = 70 # 50 in txt-based
img_array = cv2.imread(filepath, cv2.IMREAD_GRAYSCALE) # read in the image, convert to grayscale
new_array = cv2.resize(img_array, (IMG_SIZE, IMG_SIZE)) # resize image to match model's expected sizing
return new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 1) # return the image with shaping that TF wants.
1.我的模型输入是(180x180x3),由于索引超出范围,我无法将其更改为灰度。
1.由于我知道通道为3,因此我想将数组更改为new_array.reshape(-1, IMG_SIZE, IMG_SIZE, 3)
,但当它预测
print(prediction[0][0])
它不是数字0或1,所以我不能预测我的图像。
请帮助我弄清楚发生了什么事,无论是问题1还是问题2。
我很感激你的帮助。
我预计只有1或0,因此我可以将标签分类为“通过”或“未通过”
1条答案
按热度按时间toiithl61#
在prepare函数中,图像被读入为灰度,然后调整大小为(IMG_SIZE,IMG_SIZE)。如果您的模型需要3个通道(RGB),但图像被转换为灰度(1个通道),则模型将无法正确处理图像,您将无法获得预期的输出。
要解决此问题,可以更改以下行:
致:
这将读取具有3个通道(RGB)的图像。
关于第二个问题,如果预测不是0或1,则模型很可能没有输出二元分类。您可以尝试检查模型的输出,以查看它预测的内容。为此,可以在应用argmax运算之前打印出模型的输出。
如果模型未输出二元分类,则可能需要修改模型或使用专为二元分类设计的其他模型。