请考虑以下代码:
x = tf.placeholder(tf.float32, (), name='x')
z = x + tf.constant(5.0)
y = tf.mul(z, tf.constant(0.5))
with tf.Session() as sess:
print(sess.run(y, feed_dict={x: 30}))
结果图是x - > z - >年。有时候我很感兴趣从x开始计算y,但有时候我有z开始并希望将这个值注入图中。所以z需要像部分占位符一样运行。我怎么能这样做?
(对于任何有兴趣为什么我需要这个。我正在使用一个自动编码器网络,它观察图像x,生成一个中间压缩表示z,然后计算图像y的重建。我想看看网络重建时的内容我为z注入了不同的值。)
答案 0 :(得分:5)
以下列方式使用默认占位符:
x = tf.placeholder(tf.float32, (), name='x')
# z is a placeholder with default value
z = tf.placeholder_with_default(x+tf.constant(5.0), (), name='z')
y = tf.mul(z, tf.constant(0.5))
with tf.Session() as sess:
# and feed the z in
print(sess.run(y, feed_dict={z: 5}))
傻傻的我。
答案 1 :(得分:3)
我不允许评论你的帖子@iramusa,所以我会给出答案。您不需要使用placeholder_with_default。您可以将值输入到您想要的任何节点:
import tensorflow as tf
x = tf.placeholder(tf.float32,(), name='x')
z = x + tf.constant(5.0)
y = z*tf.constant(0.5)
with tf.Session() as sess:
print(sess.run(y, feed_dict={x: 2})) # get 3.5
print(sess.run(y, feed_dict={z: 5})) # get 2.5
print(sess.run(y, feed_dict={y: 5})) # get 5