繁体   English   中英

为具有内存限制的神经网络训练高效创建 HDF5 图像数据集

[英]Efficiently Create HDF5 Image Dataset for Neural Network Training with Memory Limitations

我有大的图像数据集来训练 CNN。 由于我无法将所有图像加载到我的 RAM 中,我计划将它们转储到 HDF5 文件中(使用 h5py),然后按照建议批量迭代该集合

为 PyTorch 使用大型数据集的最有效方法?

我尝试为位于同一组中的每张图片创建自己的数据集,这非常快。 但我无法想出遍历组中的所有数据集,除了通过其名称访问该集。 作为替代方案,我尝试通过扩展其形状将所有图像迭代地放入一个数据集中,根据

如何使用 h5py 将数据附加到 hdf5 文件中的一个特定数据集

使用 h5py 增量写入 hdf5

但这很慢。 有没有更快的方法来创建一个 HDF5 数据集来迭代?

我意识到这是一个老问题,但我发现了一个关于这个主题的非常有用的资源,我想分享:

https://www.oreilly.com/library/view/python-and-hdf5/9781491944981/ch04.html

基本上,hdf5(启用了块)就像一个小文件系统。 它将数据存储在分散在整个内存中的块中。 因此,就像文件系统一样,它受益于局部性。 如果块的形状与您尝试访问的数组部分的形状相同,则读取/写入速度会很快。 如果您要查找的数据分散在多个块中,则访问速度会很慢。

因此,在对图像训练 NN 的情况下,您可能必须将图像设为标准尺寸。 在创建数据集时设置chunks=(1,) + image_shape ,或者甚至更好, chunks=(batch_size,) + image_shape ,读/写会快很多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM