我有一个非常简单的输入管道,from_generator非常适合......
dataset = tf.data.Dataset.from_generator(complex_img_label_generator,
(tf.int32, tf.string))
dataset = dataset.batch(64)
iter = dataset.make_one_shot_iterator()
imgs, labels = iter.get_next()
Run Code Online (Sandbox Code Playgroud)
其中complex_img_label_generator动态生成图像,并返回表示一个numpy的阵列(H, W, 3)图像和一个简单的string标签.处理不是我可以表示从文件和tf.image操作中读取的内容.
我的问题是关于如何平衡发电机?我如何让N个这些生成器在自己的线程中运行.
一个想法是使用dataset.map与num_parallel_calls处理线程; 但是地图在张量上运行......另一个想法是创建多个生成器,每个生成器都有自己的,prefetch并以某种方式加入它们,但我看不出我如何加入N个生成器流?
我可以遵循任何规范的例子吗?
我有一个图像处理问题,其中有五个类,每个类有大约 1000 万个示例作为训练数据,其中图像是 z 得分的 25x25 numpy 数组。
显然,我无法将所有训练数据加载到内存中,因此我必须使用fit_generator.
我也是生成和扩充这些训练数据矩阵的人,但我无法实时进行,fit_generator因为训练模型太慢了。
首先,如何在磁盘上存储 5000 万个 25x25 .npy 数组?最好的做法是什么?
其次,我应该使用数据库来存储这些矩阵并在训练期间从中查询吗?我认为 SQLite 不支持多线程,并且 SQL 数据集支持在 tensorflow 中仍处于试验阶段。
我很想知道是否有一种巧妙的方法来存储这 5000 万个矩阵,以便在训练期间进行检索是最佳的。