Python Keras:如何评估模型精度(评估发电机与预测发电机)?
对于二进制分类问题,我从kerasPython 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
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
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]