Para Keras de ImageDataGenerator
flow_*
métodos, se requiere una versión stringified de índices de clase para categórica y escaso class_mode
. Tengo clase de etiquetas que se parecen ['0','1',...,'10','11',...]
y una consecuencia lamentable es que estos índices Keras en orden alfabético cadena:
Por ejemplo:
datagen = ImageDataGenerator(
rotation_range=0,
width_shift_range=0,
height_shift_range=0,
rescale=None,
shear_range=0,
zoom_range=0,
horizontal_flip=False,
preprocessing_function=preprocessor,
fill_mode='nearest')
test_generator = datagen.flow_from_dataframe(
dataframe=dfTest,
directory=None,
x_col=filePath,
y_col=ycat,
target_size=SIZE,
batch_size=BATCH_SIZE,
class_mode='sparse',
shuffle=False)
print(test_generator.class_indices)
da:
{'0': 0,
'1': 1,
'10': 2,
'11': 3,
...,
'2': 12,
'20': 13,
'21': 14,
'22': 15,
'3': 16,
'4': 17,
'5': 18,
'6': 19,
'7': 20,
'8': 21,
'9': 22}
Idealmente me gustaría ver:
{'0': 0,
'1': 1,
'2': 2,
...,
}
Pensé en cambiar de forma manual test_generator.class_indices
, pero no estoy seguro de que es seguro hacerlo ya que después de la inicialización, el generador ha pre-calculado las etiquetas de clase del conjunto de datos.
¿Hay una buena solución a este sin reescribir el flow_*
método?