Keras 图像的K-折叠交叉验证
假设我有一些图片分为3类(“猫”、“狗”、“鼠标”),我的DL网络是用keras编写的。 我使用的设计与此图片(1)中的相同: 我将数据分为三个不同的文件夹:培训、验证和测试。 根据图片,网络应该能够识别猫、狗或老鼠。我得到的准确率约为98% 它起作用了。 但出于某些原因,我需要改变这种设计。我想使用K-fold交叉验证过程,模式现在应该如(2)所示: 现在我的问题是,我不知道如何根据图2中的模式分割和分发原始数据 我只能想象两种不同的方式。让我们暂时忘记测试目录:Keras 图像的K-折叠交叉验证,keras,deep-learning,Keras,Deep Learning,假设我有一些图片分为3类(“猫”、“狗”、“鼠标”),我的DL网络是用keras编写的。 我使用的设计与此图片(1)中的相同: 我将数据分为三个不同的文件夹:培训、验证和测试。 根据图片,网络应该能够识别猫、狗或老鼠。我得到的准确率约为98% 它起作用了。 但出于某些原因,我需要改变这种设计。我想使用K-fold交叉验证过程,模式现在应该如(2)所示: 现在我的问题是,我不知道如何根据图2中的模式分割和分发原始数据 我只能想象两种不同的方式。让我们暂时忘记测试目录: 我创建了两个文件夹:“培
你有什么建议?好的,我可以回答我自己的问题 最简单的方法就是在python脚本中使用
Kfold
formsklearn
from sklearn.model_selection import KFold
在那之后,你需要对KFold进行估计
kfold = KFold(n_splits = 4, shuffle = True)
然后对拆分的数据集进行迭代,如下所示:
datagen = ImageDataGenerator(rescale = 1. / 255.)
for train, test in kfold.split(df_data):
# df is the whole dataset (all together!)
df_train = df.iloc[train, :] # Look that train is coming from the for in .. loop
df_test = df.iloc[test, :] # The same for test
train_generator = datagen.flow_from_dataframe(dataframe = df_train,
directory = dataset_dir,
... )
test_generator = datagen.flow_from_dataframe(dataframe = df_test,
directory = dataset_dir,
...)
model = models.Sequential()
.....
model.compile(...)
model.fit(...)
就这样!数据集现在被分割成多个分区!!!
注意类ImageDataGenerator不在for循环中!!!
请注意,方法(modelcreation,compile()和fit()
)必须在for循环中
上面的代码对我很有用。你能分享你的完整代码吗?