Я получаю другую точность модели от keras evaluate_generator()
и predict_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_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_generator()
я получаю acc
значения 0,5 .
Я вычисляю acc
как (TP+TN)/(TP+TN+FP+FN)
- Прав ли я, что
acc
из evaluate_generator()
основано на TP+TN/(TP+TN+FP+FN)
?
- Как
acc
может отличаться, когда я использую одни и те же данные и генератор?