我想通过均值和标准差来归一化我的数据,就像这个例子一样:
datagen.fit(data)mean = datagen.mean std = datagen.stdprint(mean, "mean")print(std, "std")
在此之前,在我的预测文件中,我会将这两个值(均值和标准差)传入这个方法中:
def normalize(x, mean, std): x[..., 0] -= mean[0] x[..., 1] -= mean[1] x[..., 2] -= mean[2] x[..., 0] /= std[0] x[..., 1] /= std[1] x[..., 2] /= std[2] return x
但在我的训练文件中,我使用flow_from_directory方法来获取数据:
train_datagen = ImageDataGenerator( zoom_range=0.2, rescale=1./255, shear_range=0.2, horizontal_flip=True, featurewise_center=True, featurewise_std_normalization=True,)train_generator = train_datagen.flow_from_directory(TRAIN_DIR, target_size=(224, 224), batch_size=50, class_mode='binary')
我的疑问是:如果我没有’x_train’数组,我如何在datagen.fit(data)
中传入数据?
我这样做对吗?
回答:
你可以自己计算mean和std。之后只需将这些值设置到DataGenerator中:
datagen = image.ImageDataGenerator(featurewise_center=True, featurewise_std_normalization=True)datagen.mean = np.array([111.1, 222.2, 333.3], dtype=np.float32).reshape((1,1,3))datagen.std = np.array([5.3, 4.2, 6.3], dtype=np.float32).reshape((1,1,3))