[使用Keras建立的模型报告了良好的准确性,但是无法预测工作]]

问题描述 投票:1回答:1

我已经使用Keras / Tensorflow建立了一个神经网络模型,该模型在建立时(使用'fit_generator')报告了良好的训练和验证准确性(90%ish),并且在测试集上使用了'evaluate_generator'函数报告了类似的准确性。但是,当我随后尝试使用该模型来生成预测时,无论是使用“ predict_generator”还是针对单个文件手动生成预测,它都会为每个预测给出“ 0”的答案。下面的代码。我没有经验,非常感谢指导。谢谢。

from keras.preprocessing.image import img_to_array, load_img, ImageDataGenerator
from keras.models import load_model
import glob, sys
import numpy as np

myModel = load_model("Gender.h5")
dataGenerator = ImageDataGenerator()
testGen = dataGenerator.flow_from_directory("newData\\A1\\test",target_size=(218,178),
    batch_size=32, class_mode='binary',shuffle=False,color_mode="rgb")
testGen.reset()
print("Test Set Accuracy: %0.1f%%"%(100*myModel.evaluate_generator(testGen)[1]))
testGen.reset()
testPredictions = myModel.predict_generator(testGen)
predictedClassIndices=np.argmax(testPredictions,axis=1)
filenames = testGen.filenames
for f in range(len(filenames)):
    print(filenames[f],":",predictedClassIndices[f])

[我已经使用Keras / Tensorflow建立了一个神经网络模型,该模型在建立时(使用'fit_generator')报告了良好的训练和验证准确性(90%ish),并使用了'...]报告了相似的准确性] >> [

这种情况的一种可能是您的班级可能是Imbalanced。如果是这样,您可以尝试:

    重新平衡数据集:通过对频率较低的类进行上采样或对频率较高的类进行下采样。
  • [调整班级权重:通过为不太频繁的班级设置较高的班级权重,您将促进网络培训,以便更多地关注降采样的班级。
  • 增加培训时间:在许多情况下-经过较长时间的培训后,网络开始更多地专注于频率较低的课程。
  • 其他可能性=>如果您的Dataset

    平衡

  • ,则当您将班级分配给testPredictions结果时,这里的问题出在最终步骤。 argmax方法返回the indices of the maximum values along an axis在这种情况下,它始终为

    0

    ,因为沿着axis=1,我们只有一个元素(with index 0)。
    因为您正在执行binary classification,所以应用0.5 probability threshold分配classes最有意义。相同的代码如下所示:

    predictedClassIndices = testPredictions > 0.5 for idx, filename in enumerate(filenames): print(filename,":",predictedClassIndices[idx])

    然后输出将为TrueFalse,其中

    False

    表示Value of Label = 0 (Female)True表示Value of Label = 1 (Male),或者可以采用其他方式,如下所示:
    female/female.1546.jpg : [False] female/female.1547.jpg : [ True] female/female.1548.jpg : [False] female/female.1549.jpg : [False] female/female.1550.jpg : [False] female/female.1566.jpg : [False] female/female.1593.jpg : [ True] female/female.1594.jpg : [False] male/male.1514.jpg : [ True] male/male.1520.jpg : [False] male/male.1525.jpg : [False] male/male.1551.jpg : [ True] male/male.1555.jpg : [False] male/male.1574.jpg : [ True] male/male.1594.jpg : [ True] male/male.1597.jpg : [ True] male/male.1599.jpg : [ True]
    希望这会有所帮助。祝您学习愉快!
    python keras generator predict
    1个回答
    0
    投票
    这种情况的一种可能是您的班级可能是Imbalanced。如果是这样,您可以尝试:
    © www.soinside.com 2019 - 2024. All rights reserved.