使用 Keras/Tensorflow 数据加载器高效加载大型 .npy 文件(>20GB)
Efficiently load large .npy files (>20GB) with Keras/Tensorflow dataloader
我目前正在实施一个机器学习模型,该模型使用相当大量的数据表示。
我的数据集由图像组成。这些图像中的每一个都被编码成一个 (224, 224, 103)
矩阵,使得整个数据集非常重。我将这些矩阵存储在磁盘上并在训练期间加载它们。
我现在正在做的是使用 8 张图像的小批量 并在整个训练过程中从磁盘加载这 8 张图像的 .npy
文件过程。这很慢但有效。
是否有使用 Keras/Tensorflow 的更有效的方法(这是我用来编写模型的方法)?
不幸的是,我找不到太多关于允许我这样做的数据加载器。
提前致谢。
您有多种选择。
我假设您为获得最终 (224, 224, 103)
矩阵而对图像进行的转换非常昂贵,并且不希望对数据加载进行预处理。如果不是这种情况,您可能会从阅读 the tutorial relevant to image processing.
中受益
我建议您使用 python 生成器读取数据,并使用 tf.data
创建数据管道以将这些 .npy
文件提供给您的模型。基本思想非常简单。您使用包装器从生成器中摄取数据,生成器将根据需要读取文件。相关文档和例子是here.
现在,一旦你开始工作,我认为 optimize 你的管道是个好主意,特别是如果你计划在多个 GPU 或多台计算机上进行训练。
我目前正在实施一个机器学习模型,该模型使用相当大量的数据表示。
我的数据集由图像组成。这些图像中的每一个都被编码成一个 (224, 224, 103)
矩阵,使得整个数据集非常重。我将这些矩阵存储在磁盘上并在训练期间加载它们。
我现在正在做的是使用 8 张图像的小批量 并在整个训练过程中从磁盘加载这 8 张图像的 .npy
文件过程。这很慢但有效。
是否有使用 Keras/Tensorflow 的更有效的方法(这是我用来编写模型的方法)? 不幸的是,我找不到太多关于允许我这样做的数据加载器。
提前致谢。
您有多种选择。
我假设您为获得最终 (224, 224, 103)
矩阵而对图像进行的转换非常昂贵,并且不希望对数据加载进行预处理。如果不是这种情况,您可能会从阅读 the tutorial relevant to image processing.
我建议您使用 python 生成器读取数据,并使用 tf.data
创建数据管道以将这些 .npy
文件提供给您的模型。基本思想非常简单。您使用包装器从生成器中摄取数据,生成器将根据需要读取文件。相关文档和例子是here.
现在,一旦你开始工作,我认为 optimize 你的管道是个好主意,特别是如果你计划在多个 GPU 或多台计算机上进行训练。