gpt4 book ai didi

python - Keras:在 flow_from_directory() 中使用多个目录

转载 作者:行者123 更新时间:2023-12-01 08:37:57 26 4
gpt4 key购买 nike

对于大多数数据集,图像是独立的,将它们随机 80%-20% 分割到 train/test/ 目录以与 Keras 的flow_from_directory()。然而,对于我的应用程序来说,情况并非如此。例如,假设我想对人们是微笑还是皱眉进行分类。我没有使用网上找到的数千张随机人微笑和皱眉的图像,而是招募了 10 名志愿者,并为每个志愿者拍摄了 100 张微笑和皱眉的图像。在我最终的应用程序中,我想对新用户是微笑还是皱眉进行分类。为了公平测试,我必须确保测试集中的用户图像不会出现在训练集中(否则我的分类器可能会拾取特定于该用户的特征,这是我不想要的),所以我省略了一名用户并在其他九名用户上训练我的模型。我的目录结构如下所示:

user1/
smile/
100 images
frown/
100 images
...
user10/
smile/
100 images
frown/
100 images

有没有办法将 Keras user1/ 作为 test/ 目录和 user2/ 通过 user10/ 提供> 作为 train/ 目录?

注意:我的问题与 this question 不重复因为这涉及并行输入多个目录以供单个训练示例使用。我的问题类似于this ,但是这个问题写得太差了,我不确定用户是否在问我同样的问题。

最佳答案

@TimD1 我相信,如果您稍微更改目录的结构方式,如下所示,您可以在 keras 中使用 flow_from_directory 。

Test_Directory/
User1/
200 images here(don't create separate folders for smile and frown here)

Train_Directory/
Smile/
All the images for smile for users 2-10
Frown/
All the images for frown for users 2-10

一旦获得此目录结构,您就可以使用以下代码并根据应用程序的需要更改详细信息。重要的是目录的路径以及是否要创建验证集。

from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.1,
zoom_range = 0.1,
validation_split=0.1
) # validation set of 10% from training data

test_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.1,
zoom_range = 0.1,
)

training_set = train_datagen.flow_from_directory('desktop/Train_Directory',target_size = (64,64),shuffle=True,
seed=13,batch_size = 32,class_mode = 'binary',
subset="training")

val_set = train_datagen.flow_from_directory('desktop/Train_Directory',target_size = (64,64),shuffle=True,
seed=13,batch_size = 32,class_mode = 'categorical',
subset="validation")

test_set= test_datagen.flow_from_directory('desktop/Test_Directory',target_size = (input_size,input_size),shuffle=False,
seed=13,class_mode=None,batch_size = 1)# for test the batch size should be set to 1 and the shuffle should be false to get the correct number of outputs in the right order your predicting the test labels

此后,使用 fit_generator 进行训练并使用 predict_generator 进行测试。如果您选择将 test_set 设置为 True,那么您需要在预测测试标签之前执行 test_set.reset() 操作

关于python - Keras:在 flow_from_directory() 中使用多个目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53637870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com