- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
基本上我有一个要处理的图像列表。我需要在加载后进行一些预处理(数据增强),然后输入到 TF 的主图。目前我正在使用一个定制的生成器,它采用路径列表生成一对张量(图像)并通过占位符馈送到网络。每个批处理的顺序处理大约需要 0.5 秒。
我刚刚阅读了Dataset
API,我可以通过使用.from_generator()
函数直接使用它,并且我可以使用.get_next()
直接作为输入。
但是 QueueRunner
如何融入框架呢? Dataset
是否隐式利用 queue
+ dequeue
来维护其 generator/get_next
管道,或者它需要我显式提供之后进入 FIFOQueue
吗?如果答案是后者,那么维护训练和验证多个 random_shuffle epoch 的管道的最佳实践是什么? (我的意思是,我需要维护多少个 DS/queueRunner,以及在哪里设置 shuffle 和 epoch?)
最佳答案
如果您使用数据集 API,则不必使用 QueueRunner 来拥有队列/缓冲区。可以使用数据集 API 创建队列/缓冲区,并同时预处理数据和训练网络。如果您有数据集,则可以使用 prefetch function 创建队列/缓冲区或shuffle function .
有关更多信息,请参阅 official tutorial on the Dataset API .
以下是在 CPU 上使用预取缓冲区进行预处理的示例:
NUM_THREADS = 8
BUFFER_SIZE = 100
data = ...
labels = ...
inputs = (data, labels)
def pre_processing(data_, labels_):
with tf.device("/cpu:0"):
# do some pre-processing here
return data_, labels_
dataset_source = tf.data.Dataset.from_tensor_slices(inputs)
dataset = dataset_source.map(pre_processing, num_parallel_calls=NUM_THREADS)
dataset = dataset.repeat(1) # repeats for one epoch
dataset = dataset.prefetch(BUFFER_SIZE)
iterator = tf.data.Iterator.from_structure(dataset.output_types,
dataset.output_shapes)
next_element = iterator.get_next()
init_op = iterator.make_initializer(dataset)
with tf.Session() as sess:
sess.run(init_op)
while True:
try:
sess.run(next_element)
except tf.errors.OutOfRangeError:
break
关于python - Tensorflow:如何将 "new"数据集 API 与 QueueRunner 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47132557/
我正在尝试使用程序执行期间创建的图像来训练 CNN。我有一个游戏环境(不是我创建的),它根据游戏中的操作生成屏幕图像。这些 Action 由学习到的 CNN 控制。 然后将这些图像插入 RandomS
我正在尝试使用自定义 py_func enqueue_op与 TensorFlow RandomShuffleQueue和QueueRunner 。我对TensorFlow很陌生并且很困惑。这是我现在
基本上我有一个要处理的图像列表。我需要在加载后进行一些预处理(数据增强),然后输入到 TF 的主图。目前我正在使用一个定制的生成器,它采用路径列表生成一对张量(图像)并通过占位符馈送到网络。每个批处理
我正在尝试使用带有 estimator.predict 的自定义输入函数进行预测,但它给了我这个: 警告:tensorflow:输入图不包含 QueueRunner。这意味着永远预测 yield 。这
我知道这两个类都处理线程。根据文档,tf.train.Coordinator 协调一组线程的终止,而 tf.train.QueueRunner 保存队列的入队操作列表,每个操作都在一个线程中运行。 但
虽然 tensorflow 非常建议不要使用将被 tf.data 对象替换的已弃用函数,但似乎没有好的文档可以干净地替换现代方法的弃用函数。此外,Tensorflow 教程仍然使用已弃用的功能来处理文
我是一名优秀的程序员,十分优秀!