我是大型数据集的新手,无法将我正在阅读的解释和教程外推到我的问题中。
我想将37019张图像(每张450x600x3)保存到一个numpy数组中并将其压缩成一个文件进行训练。是否更好地实例化37019x450x600x3零点并稍后修改它们或逐个追加450x600x3阵列?
现在我正在使用h5py但它会导致Killed:9
import numpy as np
import h5py
imgarray = np.zeros((37019,450, 600, 3))
with h5py.File('deleteme.h5', 'a') as FOB:
FOB.create_dataset("imgarray",data=imgarray,compression="gzip",compression_opts=9)
大约需要5分钟,然后:
Killed: 9
当图像数量较小时(例如3700而不是37019),这会起作用.3700会产生30MB的.h5文件。
这是否意味着我的数组对于h5dy中的一个数据集来说太大了?我是否需要将其保存在较小的块,单独的数据集或其他内容中?你推荐什么方法以便以后轻松访问和修改?
感谢您的帮助!
答案 0 :(得分:0)
在您的其他问题中,您发现zip
档案可能存在大小限制;它也可能适用于gzip
压缩。或者它可能只是花了太长时间。
h5py
文档表明,dataset
在保存到h5py
文件时会动态压缩(并在运行中解压缩)。我也看到一些提及它与chunking
的交互。您可能需要浏览h5py
github存储库或相关的邮件列表。
您是否尝试过其他压缩方法或参数?
如何将数据保存在多个数据集中,每个数据集的大小都可以轻松压缩?
答案 1 :(得分:0)
可能有更好的方法可以做到这一点,但我最终只是将我的数据集分成几个大小为1000x450x600x3的numpy数组,并且gzip正常工作。花了25分钟,但它都保存为400MB大小的.h5文件。谢谢!