首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用tf.train.shuffle_batch建立训练和推理的TF图?

如何用tf.train.shuffle_batch建立训练和推理的TF图?
EN

Stack Overflow用户
提问于 2016-10-31 10:58:43
回答 1查看 365关注 0票数 1

上下文:卷积式自动编码器

我将input_tensor和output_tensor添加到tf.add_to_collections()图中

代码语言:javascript
复制
Input to neural network from shuffle batch: [batch_size, patch_size, patch_size, depth]
During training, this is [512, 32, 32, 3]

Input to neural network for inference: [batch_size, height, width, depth]
During inference, this can be [1, 100, 100, 3], or [3, 150, 150, 3], etc.

在推理过程中,我调用tf.get_collections()来提取这些节点,然后调用sess.run()。它说,形状是固定在512,32,32,3,我如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-31 18:20:04

一个潜在的解决方案是使用tf.placeholder_with_default() op来放松输入op的形状需求。例如:

代码语言:javascript
复制
input_batch = tf.train.shuffle_batch(..., batch_size=512)

input_placeholder = tf.placeholder_with_default(input_batch, [None, None, None, 3])

如果您运行的代码依赖于input_placeholder,但不提供它,那么它将使用tf.train.shuffle_batch()的结果。或者,如果您为input_placeholder提供一个值,您可以为任何4-D张量(深度为3)提供数据,因此您可以使用任意批处理大小或图像大小。

但是,请注意,这样做将在培训中禁用一些优化,因为每个批处理的形状现在可能有所不同,至少在原则上是这样的。这使TensorFlow无法将某些内部tf.shape()调用视为常量值,这可能意味着它需要在每个培训步骤上做更多的工作。最后,为了训练和推理,最好构建两个独立的图,因为它们可以分别进行优化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40340807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档