python - 在 Keras“ImageDataGenerator”中,“validation_split”参数是一种 K 折交叉验证吗?
问题描述
我正在尝试对 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)
“validation_split = 0.1”是否意味着我已经对我的数据集进行了 10 倍交叉验证?
解决方案
不,它只进行一次验证。来自官方文档:
validation_split:在 0 和 1 之间浮动。要用作验证数据的训练数据的一部分。该模型将分离这部分训练数据,不会对其进行训练,并将在每个 epoch 结束时评估该数据的损失和任何模型指标。在改组之前,从提供的 x 和 y 数据中的最后一个样本中选择验证数据。
因此,将其设置为validation_split=0.1
简单地保留最后 10% 的数据免于训练,并将其用作验证集。
如果要进行 k 交叉验证,则必须手动进行。这是一个很好的起点:评估 Keras 中深度学习模型的性能
推荐阅读
- reactjs - 在 Google 的 Place Autocomplete Address api 中获取 Cors 政策错误
- android - 无法检测到实时检查服务。要启用实时检查,请重新启动设备
- networking - 网桥调制解调器无法在 IP 范围内设置 IP
- javascript - 如果它与id匹配,如何在对象数组内的对象中添加一个属性
- mongodb - MongoDB:查找任何字段是否为真
- javascript - 如何获得具有相同类名的不同项目位置?
- graphql - 在 Apollo Client 字段策略合并功能中访问缓存值
- javascript - 如何确定 Node.js HTTPS 请求错误是由缺少主机还是缺少代理引起的?
- html - 为什么内联块 Div 的行为与内联块按钮不同?
- c++ - 可执行的 C++ 文件不断关闭,甚至不显示生成的产品