这可能是微不足道的。我有一个模型需要一些出列的张量X
;
X = tf.Tensor(...)
yPred = model(X,...)
现在我想有时提供另一个张量Z
;
Z = tf.placeholder(...)
yPredZ = model(Z,...)
如何在不重新定义子图的情况下执行此操作?
答案 0 :(得分:1)
TensorFlow中的Feed机制允许您为任何张量(不仅仅是tf.placeholder()
张量)提供值,只要它们在形状和元素类型上匹配。
因此,如果x
和z
具有相同的形状,您应该能够写下:
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: ...})