我遍历了我的数据集,在hdf5中创建了一个hdf5文件并存储了元素。事实证明,当hdf5打开时,它不会加载ram中的所有数据,而是加载标题。 然后使用标头根据请求获取数据,这就是我解决问题的方法。
参考: http://www.machinelearninguru.com/deep_learning/data_preparation/hdf5/hdf5.html
一个简单的解决方案是预处理数据集并分别保存原始3D卷的多个较小作物。这样,您可以牺牲一些磁盘空间来实现更高效的IO。
请注意,您可以在此处与裁剪尺寸进行权衡:保存比输入所需的更大的裁剪使您仍然可以随时进行随机裁剪。如果在预处理步骤中保存重叠的作物,则可以确保仍可以生成原始数据集的所有可能的随机作物。
或者,您可以尝试使用自定义数据加载器来保留几批的完整卷。注意,这可能会在批次之间产生一些相关性。由于许多机器学习算法依赖于i.i.d样本(例如随机梯度下降),相关批次很容易造成一些严重的混乱。