神经网络在原数据集表现优异却误分类自定义手写字母图像求助
手写字母分类模型自定义测试问题
使用的数据集为AZ手写字母CSV格式数据集。
背景信息
- 输入文件为JPEG格式,通过
matplotlib的imread方法转换为numpy数组 - 后续分别使用
tensorflow的image.resize方法和image.rgb_to_grayscale方法完成图像重塑与灰度转换
模型结构
model = Sequential( [ tf.keras.Input(shape=(784,),), Dense(200, activation= "relu"), Dense(150, activation= "relu"), Dense(100, activation= "relu"), Dense(50, activation= "relu"), Dense(26, activation= "linear") ] )
问题描述
该模型在上述数据集上的准确率可达98.9%,但使用自行拍摄的手写字母图像测试时,结果始终被分类为'A'。我尝试过对图像进行颜色反转(原灰度图像中字母为黑色、背景为白色,反转后变为白字黑底),相关代码及执行情况如下:
灰度转换代码
img = plt.imread("20220922_194823.jpg") img = tf.image.rgb_to_grayscale(img) plt.imshow(img, cmap="gray")
执行后得到的图像尺寸为TensorShape([675, 637, 1])。
颜色反转与resize代码
img = 1 - img img = tf.image.resize(img, [28,28]).numpy() plt.imshow(img, cmap="gray")
执行后得到颜色反转并缩小后的图像。
我怀疑模型始终输出'A'是因为图像中存在未完全黑白化的像素,但不确定具体原因,也想了解后续如何避免这类问题。
内容的提问来源于stack exchange,提问作者user14401141
相关产品推荐
相关产品推荐

