如何在keras中将多语言预处理功能添加到DataGenerator中?

时间:2019-09-11 13:25:02

标签: keras

我有一个训练有素的DataGenerator,它具有预处理功能(可以是InceptionV3,ResNet50等预处理输入),如下所示:

train_datagen = ImageDataGenerator(
        preprocessing_function = preprocess_input,
        rotation_range=30,
        width_shift_range=0.2,
        height_shift_range=0.2,
        shear_range=0,
        brightness_range= [0.5,1.0],
        zoom_range=0.1,
        channel_shift_range=10,
        vertical_flip=True,
        horizontal_flip=True,
        fill_mode='nearest')

现在我想添加另一个预处理功能:

get_random_eraser(v_l=0, v_h=1, pixel_level=False)

因此,总而言之,它将链接模型的预处理功能(因为它已在keras中进行了培训)并实现了另一个预处理功能。我怎么做? (preprocessing_function无法获得列表[f1,f2],而且我无法在新行中重复preprocessing_function声明(很有意义,但无论如何都尝试过))

1 个答案:

答案 0 :(得分:2)

您需要使用自定义函数创建一个新的生成器:

pattern = '|'.join(code)
df_codeNaf['topNAF'] = df_codeNaf['Code_NAF'].str.contains(pattern)

在第一次尝试中将def custom_function(input_image): input_image = preprocess_input(input_image) return get_random_eraser(v_l=0, v_h=1, pixel_level=False)(input_image) new_train_gen = train_datagen = ImageDataGenerator( preprocessing_function = custom_function, rotation_range=30, width_shift_range=0.2, height_shift_range=0.2, shear_range=0, brightness_range= [0.5,1.0], zoom_range=0.1, channel_shift_range=10, vertical_flip=True, horizontal_flip=True, fill_mode='nearest') 添加到print(input_image.shape)中可能只是为了确保custom_function是单个图像还是一批图像。您可能需要相应地调整内部功能。