【发布时间】:2015-09-10 19:33:54
【问题描述】:
是否可以将少量元数据附加到 numpy memmap 文件中?
这就是我的全部问题。对于那些有兴趣的人,我的问题的详细信息如下:
我的数据集由一堆图像及其对应的多值标签组成,例如:
图像:一个 50000 x 96 x 96 x 3 的 uint8s 数组
标签:50000 x 5 整数数组
我将这些保存到长度为 50000 的 numpy 记录数组和 dtype (96, 96, 3) uint8, (5, ) int 中。这很棒,因为我可以使用 numpy.lib.format.open_memmap() 将两个数组保存在单个 memmap 文件中。
缺少的一件事是向文件添加少量元数据的能力。具体来说,我想将前 N 个条目指定为“训练集”,将剩余的 50000 - N 个条目指定为“测试集”。因此,至少,这需要将单个 int (N) 添加到文件中。更一般地说,我想允许任意数量的分区,以及它们的分区名称。例如,对于 3 个分区,这将需要保存以下附加数据:
partition_names = ["testing set", "validation set", "training set"]
partition_sizes = [30000, 10000, 10000] # last number redundant
有没有办法将此元数据添加到 memmap 文件中,同时保留我使用 numpy.lib.open_memmap() 或类似方便的方式对文件进行内存映射的能力?
PS:我曾经使用 h5py,它显然更适合存储这些额外的数据,但是与 numpy memmaps 相比,它在读取大图像时的性能很糟糕。
【问题讨论】:
-
很好奇您是否或如何解决了这个问题。我想做同样的事情。
标签: python arrays numpy dataset mmap