Python 为什么我的预测结果和准确率相比很差
我使用Keras在python中编写了一个图像分类代码(两类,“好”和“坏”),训练数据的准确率约为99%,验证数据的准确率约为95%。(图像为60乘以30像素的灰度png文件) 现在,我想使用以下代码对验证目录中的所有600个图像进行预测Python 为什么我的预测结果和准确率相比很差,python,deep-learning,keras,Python,Deep Learning,Keras,我使用Keras在python中编写了一个图像分类代码(两类,“好”和“坏”),训练数据的准确率约为99%,验证数据的准确率约为95%。(图像为60乘以30像素的灰度png文件) 现在,我想使用以下代码对验证目录中的所有600个图像进行预测 path='/home/admin/Desktop/dataset/validation/good' for file in os.listdir(path): im=cv2.imread(os.path.join(path,file)) i
path='/home/admin/Desktop/dataset/validation/good'
for file in os.listdir(path):
im=cv2.imread(os.path.join(path,file))
im=cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
im=np.reshape(im,[1, img_width,img_height,1])*(1. /255)
result=model.predict_classes(im)
但是,“坏”目录中的300个图像的结果是9[1]和291[0],而“好”目录中的300个图像的结果是42[1]和258[0],这显然是错误的
我认为我的数据处理方式不同于ImageDataGenerator和flow\u from\u directory,这导致了错误,但我不确定
********更新********
当我使用以下代码时,结果是正确的
predict_data=ImageDataGenerator(rescale=1. / 255).flow_from_directory(
'/home/admin/Desktop/dataset/validation/good',
target_size=(img_width, img_height),
batch_size= 300,
class_mode=None,
color_mode='grayscale')
result=model.predict_generator(
predict_data,
steps=1)
但是我仍然不知道错误在哪里。这可能是BGR(OpenCV)与RGB通道顺序。我使用predict_generator进行预测,结果是正确的,因此我确信问题在于数据处理。灰度图像的3个通道通常应该具有相同的值,由于过度拟合,培训结果良好,验证结果不佳。我认为,如果问题是不同的处理,那么准确率将非常糟糕,而不是一个非常好的数字,比如95%。如果你增加辍学率,情况会好转吗?
predict_data=ImageDataGenerator(rescale=1. / 255).flow_from_directory(
'/home/admin/Desktop/dataset/validation/good',
target_size=(img_width, img_height),
batch_size= 300,
class_mode=None,
color_mode='grayscale')
result=model.predict_generator(
predict_data,
steps=1)