对 tensorflow feed_dict 值 'z' 的问题感到困惑 not feed

Confused on tensorflow feed_dict problem with value 'z' not feed

最近自己写Tensorflow代码,但是在使用feed_dict获取Tensor对象的真实值时遇到了这样的问题。

我先定义占位符如self.z和self.G如下。鉴别器是一个神经网络。

    self.z = tf.placeholder(
        tf.float32, [None, self.z_dim], name='z')
    self.z_sum = histogram_summary("z", self.z)

    self.G = tf.placeholder(tf.float32, [self.batch_size] + image_dims, name='Generated_picture')
    self.real = self.discriminator(inputs)
    self.fake = self.discriminator(self.G, reuse=True)
    self.d_loss = tf.reduce_mean(tf.log(1 + tf.exp(-self.real)) + tf.log(1 + tf.exp(self.fake)))
    self.real_sum = histogram_summary("real", self.real)
    self.fake_sum = histogram_summary("fake", self.fake)
    self.d_loss_sum = histogram_summary("d_loss", self.d_loss)
    self.d_sum = merge_summary([self.z_sum, self.d_loss_sum, self.real_sum, self.fake_sum])

我尝试按如下方式更新我的鉴别器。

generated_images = self.generator(self.z)
index = np.random.choice(self.batch_size*10, size=config.batch_size)
generated_images_real = self.sess.run(generated_images, feed_dict={self.z: self.sz[index]})
_, summary_str = self.sess.run([d_optim, self.d_sum],feed_dict={
                                                       self.inputs: batch_images,
                                                       self.G: generated_images_real,
                                                       self.z: self.sz[index],

                                                   })

在这种情况下,我不确定为什么我必须为 self.z 提供价值。我相信 self.G 仅取决于 generated_images_real 这是一个实数值向量。我对此很困惑。谢谢大家。

对象self.z是一个tf.placeholder。如果您在依赖于此占位符的会话中执行操作,则 tensorflow 需要此占位符的值才能执行真正的计算。

让我们看看您 运行 的操作:generated_images_real = self.sess.run(generated_images...self.sess.run([d_optim, self.d_sum] ,...

self.d_sum 的定义我们可以看出它依赖于 self.z_sum 而后者又依赖于 self.z - 我们的占位符。因此,如果执行 self.d_sum 操作,我们必须为此占位符提供一个值。操作 d_optim 也可能依赖于 self.z 但这里没有给出它的定义。这解释了为什么我们需要在第二个语句中 self.z 的值。

在第一个语句中,generated_images 直接依赖于 self.z,因为此占位符被传递给 self.generator 函数。