Python 如何在运行Iteration.get_next()后在tensorflow中获取前一批?

Python 如何在运行Iteration.get_next()后在tensorflow中获取前一批?,python,tensorflow,tensorboard,Python,Tensorflow,Tensorboard,最近,我想实现GAN模型,并使用tf.Dataset和迭代器读取人脸图像作为训练数据 数据集和迭代器对象的代码为: self.dataset = tf.data.Dataset.from_tensor_slices(convert_to_tensor(self.data_ob.train_data_list, dtype=tf.string)) self.dataset = self.dataset.map(self._parse_function) #self.dataset = self.d

最近,我想实现GAN模型,并使用tf.Dataset和迭代器读取人脸图像作为训练数据

数据集和迭代器对象的代码为:

self.dataset = tf.data.Dataset.from_tensor_slices(convert_to_tensor(self.data_ob.train_data_list, dtype=tf.string))
self.dataset = self.dataset.map(self._parse_function)
#self.dataset = self.dataset.shuffle(buffer_size=10000)
self.dataset = self.dataset.apply(tf.contrib.data.batch_and_drop_remainder(batch_size))

self.iterator = tf.data.Iterator.from_structure(self.dataset.output_types, self.dataset.output_shapes)
self.next_x = self.iterator.get_next()
我的新GAN模型是:

self.z_mean, self.z_sigm = self.Encode(self.next_x)
self.z_x = tf.add(self.z_mean, tf.sqrt(tf.exp(self.z_sigm))*self.ep)
self.x_tilde = self.generate(self.z_x, reuse=False)
#the feature
self.l_x_tilde, self.De_pro_tilde = self.discriminate(self.x_tilde)

#for Gan generator
self.x_p = self.generate(self.zp, reuse=True)
# the loss of dis network
self.l_x,  self.D_pro_logits = self.discriminate(self.next_x, True)

所以,问题是我使用self.next_x作为输入张量两次。每次的数据集都是不同的。那么,如何解决这个问题以保持第一批代码可重用?

我在代码中使用的是以下内容,其中xy\u true是占位符。不确定是否有更高效的实现

images, labels = session.run(next_element)
batch_accuracy = session.run(accuracy, feed_dict={x: images, y_true: labels, keep_prop: 1.0})
batch_predicted_probabilities = session.run(y_pred, feed_dict={x: images, y_true: labels, keep_prop: 1.0})
我目前正在尝试使用
tf.placeholder\u和\u default
来代替x和y的普通占位符\u true,以检查它是否在我的项目中提供了更好的性能。将编辑我的答案,让您知道,如果我设法得到任何结果很快:)

编辑:
我切换到带有默认值的占位符,每批速度没有明显提高,至少在我测量它的方式上是这样。

任何时候都可以。请实施它,如果它有效,并且没有给出更好的答案,请将我的答案标记为正确!对你的案子来说,哪一个是好的还是坏的?我切换到带有默认值的占位符_,它没有给每个批次带来明显的速度提升,至少在我测量它的方式上。我唯一想到的另一种方法是在同一个数据集上有两个迭代器,其中一个比另一个快一步。