keras:对fit_generator使用ImageDataGenerator和KFold时出现问题



flow_from_directory(directory):这会获取目录,但不会获取分割的训练图像。

sklearn.model_selection.KFold:提供图像的拆分索引。这些可以在fit()中使用,但不能在fit_generator()中使用

如何将KFold与ImageDataGenerator一起使用?它在那里吗?

目前无法使用flow_from_directory生成器拆分文件夹中的数据集。这个选项根本没有实现。要获得test/train拆分,需要使用Python中的os库将主目录拆分为train/test/val目录集。

对于任何遇到这个问题的人:到这个答案发布的日期为止,在我看来,没有(至少,相对而言)简单的开箱即用的解决方案,并根据我自己的搜索结果来决定。

为了解决项目中的类似问题,我想出的唯一解决方案是在数据集中创建分区,分区数等于折叠数,并将它们保存为字典,分区数作为关键字,文件路径列表作为分区值。之后,您仍然需要将文件分别排序到训练和验证子集的类文件夹中。

例如:设K=10。算法可以这样描述:

  • 将数据集划分为10个大小相等的分区
  • 将一个分区作为验证子集。按类将其排序到所需的文件夹中
  • 分区的其余部分应被视为训练子集,并排序到所需的文件夹中
  • 为val和train子集创建data_generator
  • 使用您的体系结构训练您的模型并将其保存
  • 对每个其他分区重复上述步骤(将一个分区作为val,在其他分区上训练),但现在必须从保存文件加载模型

我担心这个解决方案的代码片段(包括排序脚本和分区字典形成脚本)太大,无法在那里提供,但如果需要,我很乐意分享。

假设您有2个类的分类问题,我会做如下操作:

from keras.utils import to_categorical  
train_y = to_categorical(train_y, num_classes=2)
test_y = to_categorical(test_y, num_classes=2)
aug = ImageDataGenerator(...) #your ImageDataGenerator
Model = model.fit_generator(aug.flow(train_x,tain_y, batch_size=32), 
validation_data=(test_x,test_y))

相关内容

  • 没有找到相关文章

最新更新