Para das Keras ImageDataGenerator
flow_*
métodos, ele requer uma versão de string índices de classe para categórica e esparsas class_mode
. Eu tenho rótulos de classe que se parecem ['0','1',...,'10','11',...]
e uma conseqüência infeliz é que os índices Keras estes, a fim cadeia de alfabética:
Por exemplo:
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, eu gostaria de ver:
{'0': 0,
'1': 1,
'2': 2,
...,
}
Eu pensei sobre como alterar manualmente test_generator.class_indices
, mas eu não tenho certeza que é seguro fazer como após a inicialização, o gerador tem pré-calculados os rótulos de classe do conjunto de dados.
Existe uma boa solução para isso sem reescrever o flow_*
método?