我正在尝试将数据增强用于 Keras 中的回归模型。因此我想使用ImageDataGenerator
Keras 的课程。我能找到的关于该任务的几乎所有教程都有分类方法,因此使用了该方法flow_from_directory
。但是对于回归任务,这是行不通的。
然后我偶然发现了这个flow
方法,但遗憾的是没有很好的例子来使用它。我能找到的唯一一件事是人们正在使用它将增强数据直接输出到硬盘驱动器。我想要做的是(像 with 一样flow_from_directory
)使用生成器并将其放入fit_generator
函数中。但是我得到的结果不是很好,我不确定是增强数据还是我使用的flow
方法错误。这是我所做的:
# Load the data (images will be model input, labels will be model output)
# NOTE:
# images.shape = (45, 256, 256, 1)
# labels.shape = (45, 2)
images, labels = load_dataset(base_path=os.getcwd(),
type=dataset_type.FrontalPrimary)
# split into training and test data
split = train_test_split(images, labels, test_size=0.10, random_state=42)
(trainX, testX, trainY, testY) = split
# make data fit model
trainX = np.reshape(trainX, (trainX.shape[0], trainX.shape[1], trainX.shape[2], 1))
testX = np.reshape(testX, (testX .shape[0], testX .shape[1], testX .shape[2], 1))
# create generator for each, training and test
data_gen = ImageDataGenerator(
rotation_range=10,
width_shift_range=0.1,
height_shift_range=0.1,
fill_mode='nearest',
validation_split=0.15)
train_generator = data_gen.flow(trainX, trainY, batch_size=1)
test_generator = data_gen.flow(testX, testY, batch_size=1)
# train model
model = cnn.get_model()
model.fit_generator(train_generator, steps_per_epoch=64, epochs=500)
# make predictions on the testing data
preds = model.predict_generator(test_generator, steps=10)
编辑:
我注意到别的东西。如果我设置data_gen
如下
data_gen = ImageDataGenerator()
或者如果数据尚未标准化
data_gen = ImageDataGenerator(rescale=1/255.)
结果与我在没有数据增强的情况下测试的结果相去甚远,即使ImageDataGenerator
不应该转换任何图像。这怎么可能?