如何将具有不同数量文件的多个目录读入tensorflow数据集

问题描述 投票:0回答:1

我的tensorflow版本是1.15,下面是我的目录树。

root
|
|---scene1
|     |
|     |--img1.npy
|     |--img2.npy
|     |--cam.txt
|     |--poses.txt
|
|---scene2
|     |
|     |--img1.npy
|     |--img2.npy
|     |--img3.npy
|     |--cam.txt
|     |--poses.txt

每个场景文件夹包含不同数量的图像(npy格式),但是恰好一个cam.txt和一个poses.txt。我尝试过使用numpy.genfromtxtnumpy.load将每个场景文件夹中的文件读入张量,然后使用

ds = tf.data.Dataset.from_tensors为每个场景创建数据集,最后使用ds.concatenate合并这些数据集。此方法有效,但是当场景文件夹数量变大时会浪费大量时间。有没有更好的方法来解决问题?

tensorflow tensorflow-datasets
1个回答
0
投票

我最近遇到了类似的问题。

[当处理非常大的数据集时,Python generators是一个不错的选择:

[Generators]的编写方式与常规函数类似,但是只要他们想返回数据就使用yield语句。每次在其上调用next()时,生成器都会从其上次中断的地方恢复(它会记住所有数据值以及上次执行的语句)。

Tensorflow的Dataset类使用静态from_generator方法(也可以使用from_generator)支持它们:

with TF 1.15
© www.soinside.com 2019 - 2024. All rights reserved.