我将Python与Keras和ImageDataGenerator
结合使用,以从目录生成图像。我大约有20堂课,我想以某种方式统一它们。例如,类别1-4是x,而类别5-8是y。 ImageDataGenerator
可以在flow_from_directory
中执行此操作吗?还是我必须根据统一类的需要对目录进行不同的拆分(例如,将目录1-4合并为dir x)?
最佳答案
我认为没有内置的方法可以做到这一点。但是,一种替代方法是将生成器包装在另一个生成器中并在其中修改标签(为演示起见,在这里,我假设我们最初有四个类,我们希望将一类和二类视为新类。第一类,第三和第四类被视为新的第二类):
# define the generator
datagen = ImageDataGenerator(...)
# assign class_mode to 'sparse' to make our work easier
gen = datagen.flow_from_directory(..., class_mode= 'sparse')
# define a mapping from old classes to new classes (i.e. 0,1 -> 0 and 2,3 -> 1)
old_to_new = np.array([0, 0, 1, 1])
# the wrapping generator
def new_gen(gen):
for data, labels in gen:
labels = old_to_new[labels]
# now you can call np_utils.to_categorical method
# if you would like one-hot encoded labels
yield data, labels
# ... define your model
# fit the model
model.fit(new_gen(gen), ...)
关于python - keras图像数据生成器.flow_from_directory(directory)统一/合并类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52384386/