Keras 使用_目录中的flow_进行培训和验证,无需扩充
我正在训练一个简单的CNN,其中Nt=148+Nv=37个图像分别用于训练和验证。我使用了Keras 使用_目录中的flow_进行培训和验证,无需扩充,keras,data-augmentation,Keras,Data Augmentation,我正在训练一个简单的CNN,其中Nt=148+Nv=37个图像分别用于训练和验证。我使用了ImageGenerator.flow\u from\u directory()方法,因为我计划在将来使用数据增强,但目前我不希望任何数据增强。我只想从磁盘上一个接一个地读取图像(每个图像只读取一次,这对验证非常重要),以避免将所有图像加载到内存中 但以下几点让我觉得发生了与预期不同的事情: 训练和验证精度达到的值与分母为148或37的分数不同。实际上,试图从三角洲的次倍数中估算出一个合理的分母,得到的数字
ImageGenerator.flow\u from\u directory()
方法,因为我计划在将来使用数据增强,但目前我不希望任何数据增强。我只想从磁盘上一个接一个地读取图像(每个图像只读取一次,这对验证非常重要),以避免将所有图像加载到内存中
但以下几点让我觉得发生了与预期不同的事情:
模型。将\u生成器()
与从ImageGenerator.flow\u from\u directory()
构建的生成器配合使用,以实现:
-无数据扩充
-两个生成器应分别向培训过程和验证过程提供所有图像,每个历元仅提供一次
-洗牌是很好的,而且实际上是需要的,所以每个时代运行的都不同
同时,我将自己定位为将批量大小设置为验证集长度(即37)。作为训练集数值的一个除法器,我认为它应该计算出这些数字
但我仍然不确定以下代码是否达到了“完全没有数据扩充”的要求
你的处境中有一些问题。 首先,图像的数量非常少刮取更多图像并使用增强功能。 第二,我看到的典型分数是: 从总体数据来看: 火车80% 20%用于验证 将选定的图像按此比例放入文件夹中 第三,如果将此行放在
flow\u from\u目录
调用的最后一行之后(并在最后一行后面加逗号),则可以检查代码是否生成数据:
然后运行模型(编译,然后拟合)并检查保存到\u目录
文件夹的内容
valid_augmenter = ImageDataGenerator(rescale=1./255)
val_batch_size = 37
train_generator = train_augmenter.flow_from_directory(
train_data_dir,
target_size=(img_height, img_width),
batch_size=val_batch_size,
class_mode='binary',
color_mode='grayscale',
follow_links=True )
validation_generator = valid_augmenter.flow_from_directory(
validation_data_dir,
target_size=(img_height,img_width),
batch_size=val_batch_size,
class_mode='binary',
color_mode='grayscale',
follow_links=True )
save_to_dir='folder_to_see_augmented_images'