¿Por qué barajar mi conjunto de validación en Keras cambia el rendimiento de mi modelo?

Por qué estoy confundido:

Si pruebo mi modelo en los ejemplos [A, B, C], obtendrá una cierta precisión. Si pruebo el mismo modelo en los ejemplos [C, B, A], debería obtener la misma precisión. En otras palabras, mezclar los ejemplos no debería cambiar la precisión de mi modelo. Pero eso es lo que parece estar sucediendo a continuación:

Paso a paso:

Aquí es donde entreno al modelo:

model.fit_generator(batches, batches.nb_sample, nb_epoch=1, verbose=2,
                    validation_data=val_batches,
                    nb_val_samples=val_batches.nb_sample)

Aquí es donde pruebo el modelo, sin barajar el conjunto de validación:

gen = ImageDataGenerator()
results = []
for _ in range(3):
    val_batches = gen.flow_from_directory(path+"valid", batch_size=batch_size*2,
                                          target_size=target_size, shuffle=False)
    result = model.evaluate_generator(val_batches, val_batches.nb_sample)
    results.append(result)

Aquí están los resultados (val_loss, val_acc):

[2.8174608421325682, 0.17300000002980231]
[2.8174608421325682, 0.17300000002980231]
[2.8174608421325682, 0.17300000002980231]

Tenga en cuenta que las precisiones de validación son las mismas.

Aquí es donde pruebo el modelo, con unbarajado conjunto de validación:

results = []
for _ in range(3):
    val_batches = gen.flow_from_directory(path+"valid", batch_size=batch_size*2,
                                          target_size=target_size, shuffle=True)
    result = model.evaluate_generator(val_batches, val_batches.nb_sample)
    results.append(result)

Aquí están los resultados (val_loss, val_acc):

[2.8174608802795409, 0.17299999999999999]
[2.8174608554840086, 0.1730000001192093]
[2.8174608268737793, 0.17300000059604645]

Darse cuenta delas precisiones de validación son inconsistentes, a pesar de un conjunto de validación sin cambios y un modelo sin cambios. ¿Que esta pasando?

Nota:

Estoy evaluando todo el conjunto de validación cada vez.model.evaluate_generator regresa después de evaluar el modelo en el número de ejemplos igual aval_batches.nb_sample, que es el número de ejemplos en el conjunto de validación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta