Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras:如何评估模型精度(评估发电机与预测发电机)?_Python_Tensorflow_Keras_Deep Learning - Fatal编程技术网

Python Keras:如何评估模型精度(评估发电机与预测发电机)?

Python Keras:如何评估模型精度(评估发电机与预测发电机)?,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,对于二进制分类问题,我从kerasevaluate\u generator()和predict\u generator()获得了不同的模型精度: def evaluate_model(model, generator, nBatches): score = model.evaluate_generator(generator=generator, # Generator yielding tuples

对于二进制分类问题,我从keras
evaluate\u generator()
predict\u generator()
获得了不同的模型精度:

def evaluate_model(model, generator, nBatches):
    score = model.evaluate_generator(generator=generator,               # Generator yielding tuples
                                     steps=generator.samples//nBatches, # number of steps (batches of samples) to yield from generator before stopping
                                     max_queue_size=10,                 # maximum size for the generator queue
                                     workers=1,                         # maximum number of processes to spin up when using process based threading
                                     use_multiprocessing=False,         # whether to use process-based threading
                                     verbose=0)
    print("loss: %.3f - acc: %.3f" % (score[0], score[1]))
使用
evaluate\u generator()
,我得到的
acc
值高达0.7

def evaluate_predcitions(model, generator):
    predictions = model.predict_generator(generator=generator,
                                    steps=generator.samples/nBatches,
                                    max_queue_size=10,
                                    workers=1,
                                    use_multiprocessing=False,
                                    verbose=0)

    # Evaluate predictions
    predictedClass = np.argmax(predictions, axis=1)
    trueClass = generator.classes
    classLabels = list(generator.class_indices.keys())

    # Create confusion matrix
    confusionMatrix = (confusion_matrix(
        y_true=trueClass,                                       # ground truth (correct) target values
        y_pred=predictedClass))                                 # estimated targets as returned by a classifier
    print(confusionMatrix)
使用
predict\u generator()
,我得到
acc
0.5。 我将
acc
计算为
(TP+TN)/(TP+TN+FP+FN)


  • 我说得对吗,来自
    evaluate\u generator()
    acc
    是基于
    TP+TN/(TP+TN+FP+FN)
  • 当我使用相同的数据和生成器时,
    acc
    怎么可能不同
解决此问题(评估和预测发电机精度)。您只需在代码中执行三件事:

(1) 设置

在来自\u目录的
test\u datagen.flow\u或来自\u dataframe的
test\u datagen.flow\u中

(2) 设置

模型中。预测\u生成器
和(3)变化

这些更改将使您的程序在主线程上执行,剩余索引并与图像id匹配。然后两种精度应相同

shuffle = False
workers = 0
trueClass = generator.classes[generator.index_array]