Для методов keras ImageDataGenerator
flow_*
требуется строковая версия индексов классов для категориальных и разреженных class_mode
. У меня есть метки классов, которые выглядят как ['0','1',...,'10','11',...]
, и к сожалению, Keras индексирует их в строковом алфавитном порядке:
Например:
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)
дает:
{'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}
В идеале я хотел бы видеть:
{'0': 0,
'1': 1,
'2': 2,
...,
}
Я думал о ручном изменении test_generator.class_indices
, но я не уверен, что это безопасно, поскольку после инициализации генератор предварительно рассчитал метки классов набора данных.
Есть ли хорошее решение для этого без переписывания метода flow_*
?