我有超过 100,000 个文件,每个文件包含 20 多个示例。每个文件的示例数不同。如何在 Chainer 中创建批处理大小为 ~10 的迭代器,而无需预加载内存中的所有文件?
我认为您可以使用DatasetMixin
类来定义自己的数据集。 您可以覆盖get_example(i)
方法来提取i
-th数据,因此您可以在需要get_example(i)
中的数据时加载文件。 但是,它仍然需要"预索引",这意味着您需要定义哪些i
-th 数据对应于哪个文件。
下面是如何定义自己的DatasetMixin
类的参考。
参考: - Chainer v3初学者教程(日语) - 使用DatasetMixin从您自己的数据创建数据集类
请参阅使用DatasetMixin
按需加载图像的官方示例: https://github.com/chainer/chainer/blob/master/examples/imagenet/train_imagenet.py#L39