Python kedro:使用keras ImageDataGenerator训练图像分类器

Python kedro:使用keras ImageDataGenerator训练图像分类器,python,tensorflow,keras,kedro,Python,Tensorflow,Keras,Kedro,处理图像和KERA时应使用哪个kedro数据集?我知道有,但图像的数量太大,无法存储在内存中。keras ImageDataGenerator真正需要的是图像数据集的本地文件夹位置,格式如下: data/ train/ dogs/ dog001.jpg dog002.jpg ... cats/ cat001.jpg cat002.jpg

处理图像和KERA时应使用哪个kedro数据集?我知道有,但图像的数量太大,无法存储在内存中。keras ImageDataGenerator真正需要的是图像数据集的本地文件夹位置,格式如下:

data/
    train/
        dogs/
            dog001.jpg
            dog002.jpg
            ...
        cats/
            cat001.jpg
            cat002.jpg
            ...
    validation/
        dogs/
            dog001.jpg
            dog002.jpg
            ...
        cats/
            cat001.jpg
            cat002.jpg
            ...

可以使用参数指定数据位置,但我认为数据的适当位置应该是数据目录。有没有一种简单的方法可以在数据目录中指定此数据位置?

如何在
parameters.yml
中设置路径,然后将其作为ImageDataGenerator的输入读取。它可能看起来像:

train_dogs_location: data/train/dogs/
根据最佳方案修改上述示例。
您还可以考虑在<代码> CONF/Base/Global中的所有数据集设置全局路径。例如,对于根数据文件夹。

如何在
parameters.yml
中设置路径,然后将其作为ImageDataGenerator的输入读取。它可能看起来像:

train_dogs_location: data/train/dogs/
根据最佳方案修改上述示例。
您还可以考虑在<代码> CONF/Base/Global中的所有数据集设置全局路径。例如,对于您的根数据文件夹。

我认为您的问题有两个部分需要分开

  • 是否可以配置自定义ImageDataGenerator数据集?(TLDR;是)
  • 是否可以使用与我的用例相匹配的文件路径参数来配置上述内容?(是的,但您可能不希望您的目录结构成为目录结构的默认视图,因为其他用户可能也无法使用它)
  • 是否可以配置自定义ImageDataGenerator数据集? 这里有一些不完整的python代码,可以用来构建自定义数据集。如果你想要一个这样的解决方案,我会让你自己来解决。查看中的样本数据集,从kedro readthedocs中获得灵感和建议

    将tensorflow导入为tf
    从kedro.io.core导入AbstractDataSet
    类ImageDataGeneratorDataSet(AbstractDataSet):
    定义初始化__(
    自己
    文件路径:str,
    加载参数:Dict[str,Any]=None,
    保存参数:Dict[str,Any]=None):
    self.filepath=filepath
    self.load\u args=load\u args
    self.save\u args=save\u args
    def加载(自):
    generator=tf.keras.preprocessing.image.ImageDataGenerator(**self.load\u args)
    从_目录(self.filepath)返回generator.flow_
    def保存(自身、数据):
    引发异常(“不支持使用ImageDataGeneratorDataSet保存”)
    
    2:是否可以使用与我的用例匹配的文件路径参数来配置上述内容? 虽然我们可以修改上面的内容以接受一些参数并返回不同的迭代器,但如果目录结构不同,这可能会给我们带来问题。这是因为参数化在很大程度上依赖于通用约定

    如果您的约定是
    data/{train/validation}/{dog/cat}/images…
    您提取和应用参数的解决方案可能与train/validation和dog/cat各自的顺序相耦合,并且可能不适用于具有
    data/{dog/cat}/{train/validation}/images…
    约定的其他用户

    更好的模式可能是实现一个解决方案(如我在第一节中概述的),在目录中为每个不同的培训/验证数据注册一个数据集,并在运行时在节点内组合迭代器以创建培训和验证迭代器

    例如,您可以使用数据集训练猫、训练狗、验证猫、验证狗。在节点中,可以将这些迭代器izip在一起(请参阅)


    如果你最终采用了这种方法,请提交一份公关报告并做出贡献:)祝你好运

    我认为你的问题有两个部分需要分开

  • 是否可以配置自定义ImageDataGenerator数据集?(TLDR;是)
  • 是否可以使用与我的用例相匹配的文件路径参数来配置上述内容?(是的,但您可能不希望您的目录结构成为目录结构的默认视图,因为其他用户可能也无法使用它)
  • 是否可以配置自定义ImageDataGenerator数据集? 这里有一些不完整的python代码,可以用来构建自定义数据集。如果你想要一个这样的解决方案,我会让你自己来解决。查看中的样本数据集,从kedro readthedocs中获得灵感和建议

    将tensorflow导入为tf
    从kedro.io.core导入AbstractDataSet
    类ImageDataGeneratorDataSet(AbstractDataSet):
    定义初始化__(
    自己
    文件路径:str,
    加载参数:Dict[str,Any]=None,
    保存参数:Dict[str,Any]=None):
    self.filepath=filepath
    self.load\u args=load\u args
    self.save\u args=save\u args
    def加载(自):
    generator=tf.keras.preprocessing.image.ImageDataGenerator(**self.load\u args)
    从_目录(self.filepath)返回generator.flow_
    def保存(自身、数据):
    引发异常(“不支持使用ImageDataGeneratorDataSet保存”)
    
    2:是否可以使用与我的用例匹配的文件路径参数来配置上述内容? 虽然我们可以修改上面的内容以接受一些参数并返回不同的迭代器,但如果目录结构不同,这可能会给我们带来问题。这是因为参数化在很大程度上依赖于通用约定

    如果您的约定是
    data/{train/validation}/{dog/cat}/images…
    您提取和应用参数的解决方案可能与train/validation和dog/cat各自的顺序相耦合,并且可能不适用于具有
    data/{dog/cat}/{train约定的其他用户/