我将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/

10-12 19:29