Python kedro:使用keras ImageDataGenerator训练图像分类器
处理图像和KERA时应使用哪个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
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中的所有数据集设置全局路径。例如,对于您的根数据文件夹。我认为您的问题有两个部分需要分开
将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在一起(请参阅)
如果你最终采用了这种方法,请提交一份公关报告并做出贡献:)祝你好运我认为你的问题有两个部分需要分开
将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约定的其他用户/