Tensorflow Keras model.fit_生成器此方法从何处获取标签

Tensorflow Keras model.fit_生成器此方法从何处获取标签,tensorflow,machine-learning,keras,google-drive-api,image-classification,Tensorflow,Machine Learning,Keras,Google Drive Api,Image Classification,我找到了一些代码,用Keras创建了一个机器学习模型,但我真的不知道如何把我自己的图像放进去。模型是这样创建的: model = Model(inputs=base_model.input, outputs=predictions) model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy']) train_datagen = Image

我找到了一些代码,用Keras创建了一个机器学习模型,但我真的不知道如何把我自己的图像放进去。模型是这样创建的:

model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy'])
train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

training_set = train_datagen.flow_from_directory('/content/drive/My Drive/multiclass/train',
                                                 target_size = (224, 224),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')
# Training the model for 5 epochs
model.fit_generator(training_set,
                     steps_per_epoch = 8000,
                     epochs = 5,
                     validation_data = test_set,
                     validation_steps = 200)
训练集是这样创建的:

model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy'])
train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

training_set = train_datagen.flow_from_directory('/content/drive/My Drive/multiclass/train',
                                                 target_size = (224, 224),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')
# Training the model for 5 epochs
model.fit_generator(training_set,
                     steps_per_epoch = 8000,
                     epochs = 5,
                     validation_data = test_set,
                     validation_steps = 200)
在这里,您可以看到一个指向google驱动器位置的路径,作者在google.colab import drive的
开头这样连接该位置;mount('/content/drive/')
,但我看不出这个谷歌硬盘中的数据是什么样子

有了这些数据,培训开始如下:

model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy'])
train_datagen = ImageDataGenerator(rescale = 1./255,
                                   shear_range = 0.2,
                                   zoom_range = 0.2,
                                   horizontal_flip = True)

training_set = train_datagen.flow_from_directory('/content/drive/My Drive/multiclass/train',
                                                 target_size = (224, 224),
                                                 batch_size = 32,
                                                 class_mode = 'categorical')
# Training the model for 5 epochs
model.fit_generator(training_set,
                     steps_per_epoch = 8000,
                     epochs = 5,
                     validation_data = test_set,
                     validation_steps = 200)
我怎样才能把自己的照片放进去?模型如何知道哪个图像属于哪个类?我是否必须把它们放在不同的文件夹中,并以我的班级命名

我想知道的另一件事是,图像必须是特定的大小,比如224*224像素,因为目标大小在flow\u from\u directory方法中,还是在这个模型中它们会自动转换

我感谢每一个答案


向Alex致意这里是一个简单的例子。假设你想建立一个CNN,可以对狗、猫和老鼠进行分类。所以你有三节课。现在假设你已经收集了1000张狗的图片,1000张猫的图片和1000张老鼠的图片。现在,您需要将图像数据集拆分为三个数据集,一个用于培训,一个用于验证,一个用于测试。首先创建3个目录。让我们将它们称为train_dir、test_dir和valid_dir。现在在每个目录中创建三个子目录,称它们为猫、狗和老鼠。因此,您的结构如下所示

train_dir
      -- cats
      -- dogs
      -- mice

test_dir
      -- cats
      -- dogs
      -- mice

valid_dir
      -- cats
      -- dogs
      -- mice

现在假设您希望80%的数据用于培训,10%用于验证,10%用于测试。因此,拍摄800张猫的照片,并将它们放入train_dir的cats文件夹中。对狗目录的800个狗图像和鼠标目录的800个图像执行相同的操作。然后,在剩下的600张图片中,拍摄100张猫的图片,然后放入test_dir下的cat目录中。对100个狗图像和100个老鼠图像执行相同的操作。最后,取你留下的300张图片,将100张cat图片放在cat目录下的有效目录下。对100个狗图像和100个老鼠图像执行相同的操作。您的数据集现在已完成。然后创建一个训练、测试和验证生成器。对于flow_from_目录中的train generator,使用train_dir;对于valid generator,使用valid_dir;对于test generator,使用test_dir。

为了使用
flow_from_目录
每个类都需要位于子文件夹中。Keras的文档中直接提到了这一点:如果你能在软件文档中找到答案,就没有必要问这样的问题。