Tensorflow多个输入到图表

时间:2017-01-24 18:09:26

标签: tensorflow

这可能是微不足道的。我有一个模型需要一些出列的张量X;

X = tf.Tensor(...)
yPred = model(X,...)

现在我想有时提供另一个张量Z;

Z = tf.placeholder(...)
yPredZ = model(Z,...)

如何在不重新定义子图的情况下执行此操作?

1 个答案:

答案 0 :(得分:1)

TensorFlow中的Feed机制允许您为任何张量(不仅仅是tf.placeholder()张量)提供值,只要它们在形状和元素类型上匹配。

因此,如果xz具有相同的形状,您应该能够写下:

x = ...  # Some dequeued `tf.Tensor`. 
yPred = model(x, ...)

# ...

sess.run(yPred, feed_dict={x: ...})

在某些情况下,您可能希望将具有不同形状的张量馈送到x(通常是不太具体的形状,例如具有不同的批量大小尺寸)。在这些情况下,您可以使用tf.placeholder_with_default()创建一个占位符,当为其提供时,其值默认为x

x = ...  # Some dequeued `tf.Tensor`.

# For example, a shape of `None` means that the shape is completely unconstrained.
# In practice, you will probably want to constrain at least the rank of the
# placeholder to match the rank of `x`.
x_placeholder = tf.placeholder_with_default(x, shape=None)

yPred = model(x, ...)

# ...

sess.run(yPred, feed_dict={x_placeholder: ...})