【发布时间】:2022-01-13 00:50:07
【问题描述】:
我使用 pytables 构建了一个 hdf5 数据集。它包含数千个节点,每个节点都是未经压缩存储的图像(形状为 512x512x3)。当我在其上运行深度学习训练循环(使用 Pytorch 数据加载器)时,它随机崩溃,说该节点不存在。但是,它永远不会丢失同一个节点,当我自己打开文件以验证节点是否在这里时,它总是在这里。
我按顺序运行所有内容,因为我认为我可能是文件上的多线程/多处理访问的错误。但它并没有解决问题。我尝试了很多东西,但都没有成功。
有人知道该怎么做吗?我应该在调用之间添加一个计时器,让机器有时间重新分配文件吗?
最初我只使用 pytables,但为了解决我的问题,我尝试使用 h5py 加载文件。不幸的是,它并没有更好地工作。
这是我在使用 h5py 时遇到的错误:“RuntimeError: Unable to get link info (bad symbol table node signature)”
确切的错误可能会改变,但每次都会显示“错误的符号表节点签名”
PS:我无法共享代码,因为它很大,并且是我公司财产的更大基码的一部分。我仍然可以分享下面的部分代码来展示我是如何加载图像的:
with h5py.File(dset_filepath, "r", libver='latest', swmr=True) as h5file:
node = h5file["/train_group_0/sample_5"] # <- this line breaks
target = node.attrs.get('TITLE').decode('utf-8')
img = Image.fromarray(np.uint8(node))
return img, int(target.strip())
【问题讨论】:
标签: python-3.x pytorch h5py pytables