gpt4 book ai didi

python-3.x - Tensorflow 合并数据集的替代方法

转载 作者:行者123 更新时间:2023-11-30 09:17:31 24 4
gpt4 key购买 nike

所以我正在用tensorflow编写一个GAN,并且需要鉴别器和生成器是对象。现在我在为鉴别器创建训练数据集时遇到问题。

目前我的代码的相关部分如下所示:

self.dataset=tf.data.Dataset.from_tensor_slices((self.y_,self.x_)) #creates dataset
self.fake_dataset=tf.data.Dataset.from_tensor_slices((self.x_fake_)) #creates dataset

self.dataset=self.dataset.shuffle(buffer_size=BUFFER_SIZE) #shuffles
self.fake_dataset=self.fake_dataset.shuffle(buffer_size=BUFFER_SIZE) #shuffles

self.dataset=self.dataset.repeat().batch(self.batch_size) #batches
self.fake_dataset=self.fake_dataset.repeat().batch(self.batch_size) #batches

self.iterator=tf.data.Iterator.from_structure(self.dataset.output_types,self.dataset.output_shapes) #creates iterators
self.fake_iterator=tf.data.Iterator.from_structure(self.fake_dataset.output_types,self.fake_dataset.output_shapes) #creates iterators

self.x=self.iterator.get_next()
self.x_fake=self.fake_iterator.get_next()

self.dataset_init_op = self.iterator.make_initializer(self.dataset,name=self.name+'_dataset_init')
self.fake_dataset_init_op=self.fake_iterator.make_initializer(self.fake_dataset,name=self.name+'_dataset_init')

我需要的是该函数交替给出一批 self.x,然后给出一批 self.x_fake。

有没有一种简单的方法可以做到这一点,或者我必须将结果传递给计数器和 if 语句?

最佳答案

不确定我是否完全理解您的需要,但是如果您想在图构造时定义的同一个调用中交替使用不同的迭代器,那么您可以使用 Python 逻辑来选择迭代器你需要。例如:

def __init__(self):
# Make graph and iterators...
self._use_fake_batch = False

def next_batch(self):
iter = self.fake_iterator if self._use_fake_batch else self.iterator
self._use_fake_batch = not self._use_fake_batch
return iter.get_next()

或者不使用附加变量,使用itertools:

from itertools import chain, repeat

def __init__(self):
# Make graph and iterators...
self._iterators = chain.from_iterable(repeat((self.iterator, self.fake_iterator)))

def next_batch(self):
return next(self._iterators).get_next()

关于python-3.x - Tensorflow 合并数据集的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51427442/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com