Tensorflow 如何使用TF.train.shuffle_batch构建训练和推理的TF图?
上下文:卷积自动编码器 我使用tf将输入张量和输出张量添加到图中。将张量添加到集合()中Tensorflow 如何使用TF.train.shuffle_batch构建训练和推理的TF图?,tensorflow,Tensorflow,上下文:卷积自动编码器 我使用tf将输入张量和输出张量添加到图中。将张量添加到集合()中 在推理过程中,我调用tf.get_collections()来提取这些节点,然后调用sess.run()。它说形状固定在[512,32,32,3],我如何解决这个问题?一个可能的解决方案是使用op来放松输入op上的形状要求。例如: input_batch = tf.train.shuffle_batch(..., batch_size=512) input_placeholder = tf.placeho
在推理过程中,我调用tf.get_collections()来提取这些节点,然后调用sess.run()。它说形状固定在[512,32,32,3],我如何解决这个问题?一个可能的解决方案是使用op来放松输入op上的形状要求。例如:
input_batch = tf.train.shuffle_batch(..., batch_size=512)
input_placeholder = tf.placeholder_with_default(input_batch, [None, None, None, 3])
如果您运行依赖于input\u placeholder
的代码,但不输入它,它将使用tf.train.shuffle\u batch()
的结果。或者,如果为input\u placeholder
输入值,则可以输入任何4-D张量(深度为3),因此可以使用任何批次大小或图像大小
但是,请注意,这样做将禁用培训中的一些优化,因为每个批次的形状现在可以改变,至少在原则上是这样。这可以防止TensorFlow将一些内部调用视为常量值,这可能意味着它需要在每个训练步骤上做更多的工作。最后,最好为训练和推理建立两个单独的图表,因为它们可以单独优化。参考。Yaroslav提到拥有多个图形很少有用。我们应该怎么做?我又问了一个问题。
input_batch = tf.train.shuffle_batch(..., batch_size=512)
input_placeholder = tf.placeholder_with_default(input_batch, [None, None, None, 3])