Per di Keras ImageDataGenerator
flow_*
metodi, richiede una versione stringata del indici di classe per la categorica e radi class_mode
. Ho etichette di classe che assomigliano ['0','1',...,'10','11',...]
e una sfortunata conseguenza è che gli indici Keras questi in ordine alfabetico stringa:
Per esempio:
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)
dà:
{'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 mi piacerebbe vedere:
{'0': 0,
'1': 1,
'2': 2,
...,
}
Ho pensato di cambiare manualmente test_generator.class_indices
, ma non sono sicuro che è sicuro di fare come dopo l'inizializzazione, il generatore ha pre-calcolate le etichette di classe del set di dati.
C'è una bella soluzione a questo senza dover riscrivere il flow_*
metodo?