我的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.genfromtxt
和numpy.load
将每个场景文件夹中的文件读入张量,然后使用
ds = tf.data.Dataset.from_tensors
为每个场景创建数据集,最后使用ds.concatenate
合并这些数据集。此方法有效,但是当场景文件夹数量变大时会浪费大量时间。有没有更好的方法来解决问题?
我最近遇到了类似的问题。
[当处理非常大的数据集时,Python generators是一个不错的选择:
[Generators]的编写方式与常规函数类似,但是只要他们想返回数据就使用yield语句。每次在其上调用
next()
时,生成器都会从其上次中断的地方恢复(它会记住所有数据值以及上次执行的语句)。
Tensorflow的Dataset
类使用静态from_generator
方法(也可以使用from_generator
)支持它们:
with TF 1.15