我有一个训练有素的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声明(很有意义,但无论如何都尝试过))
答案 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
是单个图像还是一批图像。您可能需要相应地调整内部功能。