【问题标题】:Keras model.fit_generator Where does this method get the labelsKeras model.fit_generator 这个方法在哪里获取标签
【发布时间】:2021-05-20 15:15:45
【问题描述】:

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

model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer=SGD(lr=0.0001, momentum=0.9), loss='categorical_crossentropy', metrics = ['accuracy'])

training_set 是这样创建的:

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')

在这里,您可以看到作者在开头这样连接的 google-drive 位置的路径 from google.colab import drive; drive.mount('/content/drive/') 但我看不到这个 google drive 中的数据是什么样的。

有了这些数据,训练就这样开始了:

# 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 像素,因为 target_size 位于 flow_from_directory 方法中,还是在此模型中自动转换?

感谢每一个回答!

最好的问候亚历克斯

【问题讨论】:

标签: tensorflow machine-learning keras google-drive-api image-classification


【解决方案1】:

这是一个简单的例子。假设你想构建一个可以对狗、猫和老鼠进行分类的 CNN。所以你有3个班级。现在假设你已经收集了 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张图片放到valid_dir下的cat目录下。对 100 个狗图像和 100 个老鼠图像执行相同的操作。您的数据集现已完成。然后创建一个训练、测试和验证生成器。对于 flow_from_directory 中的 train generator,使用 train_dir,对于 valid generator,使用 valid_dir,对于 test generator,使用 test_dir。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 2016-08-10
    • 2016-03-03
    相关资源
    最近更新 更多