【问题标题】:Getting specific items from binary files with an index in python在python中使用索引从二进制文件中获取特定项目
【发布时间】:2021-05-29 10:50:56
【问题描述】:

我正在使用 pytorch,但在读取大型数据集时遇到了麻烦。考虑到数据的大小,有必要将它们保存为文件。

我没有将数据预处理成批处理并将它们分别保存为文件,而是寻找一种可以仅读取一个或几个二进制文件的特定部分的方法,并带有指示相应文件的索引文件(如果需要)和寻找职位。

例如,假设一个数据集文件包含很多图像(可能大小不同),以及一个指示每个图像的开始位置和结束位置的索引文件。使用索引文件初始化类似字典或类似列表的容器data。当我想读取第三张图片时,我可以简单地使用data[2],它可以快速跳转到特定位置并返回我想要的内容。

是否有现有的方法可以很好地处理它?据我所知,SQL 或 pandas 可能是固定字段长度数据的可能解决方案,但我不知道它们是否可以处理各种字段长度和二进制数据。

【问题讨论】:

  • 看看HDF5格式?
  • @Corralien 谢谢! H5PY 模块真的很管用!

标签: python pandas database numpy pytorch


【解决方案1】:

您正在寻找的是DataLoader 类。该类用于从外部源(数据库、数据流、文件存储等)读取数据。您将需要实现 __len__()__getitem__() 方法。

要允许使用可帮助您从自定义数据集中加载数据的索引文件,您可以使用IterableDataset

您可以在pytorch manuals 中找到更多与数据处理相关的信息,也可以查看以下一些示例:

因此,在您的情况下,您将在DataLoader 中实现读取__getitem__() 中的二进制文件(或二进制文件的切片)的逻辑。

【讨论】:

  • 感谢您的建议! IterableDataset 对我来说非常有用。 HDF5 格式是最好的解决方案,值得尝试将 HDF5 与 IterableDataset 结合使用。
猜你喜欢
  • 2017-09-29
  • 2015-09-10
  • 2016-10-04
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多