Beh*_*rit 2 python cross-validation keras
我正在尝试对 Keras 模型进行 K 折交叉验证(使用 ImageDataGenerator 和 flow_from_directory 用于训练和验证数据),我想知道“ImageDataGenerator”中的参数“validation_split”是否有效
test_datagen = ImageDataGenerator(
rescale=1. / 255,
rotation_range = 180,
width_shift_range = 0.2,
height_shift_range = 0.2,
brightness_range = (0.8, 1.2),
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
vertical_flip = True,
validation_split = 0.1
)
train_datagen = ImageDataGenerator(
rotation_range = 180,
width_shift_range = 0.2,
height_shift_range = 0.2,
brightness_range = (0.8, 1.2),
rescale = 1. / 255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True,
vertical_flip = True,
validation_split = 0.1
)
train_generator = train_datagen.flow_from_directory(
train_data_dir,
target_size = (img_width, img_height),
batch_size = batch_size,
class_mode ='binary',
seed = 42
)
validation_generator = test_datagen.flow_from_directory(
validation_data_dir,
target_size = (img_width, img_height),
batch_size = batch_size,
class_mode = 'binary',
seed = 42
)
history = model.fit_generator(
train_generator,
steps_per_epoch = nb_train_samples // batch_size,
epochs = epochs,
validation_data = validation_generator,
validation_steps = nb_validation_samples // batch_size)
Run Code Online (Sandbox Code Playgroud)
“validation_split = 0.1”是否意味着我已经对数据集进行了 10 倍交叉验证?
不。它只验证一次。来自官方文档:
valid_split:在 0 和 1 之间浮动。用作验证数据的训练数据的分数。该模型将分离这部分训练数据,不会对其进行训练,并将在每个时期结束时评估该数据的损失和任何模型指标。验证数据是在洗牌之前从提供的 x 和 y 数据中的最后一个样本中选择的。
因此,将其设置为validation_split=0.1简单地保留最后 10% 的数据进行训练,并将其用作验证集。
如果您想进行 k 交叉验证,则必须手动进行。这是一个很好的起点:Evaluate the Performance of Deep Learning Models in Keras
| 归档时间: |
|
| 查看次数: |
7443 次 |
| 最近记录: |