Не удается получить следующий элемент из генератора - PullRequest
0 голосов
/ 05 июля 2018

Есть сегмент кода. при запуске программы выдается следующая ошибка

epoch, step, d_train_feed_dict, g_train_feed_dict = inf_data_gen.next()
AttributeError: 'generator' object has no attribute 'next'

Соответствующий сегмент кода указан следующим образом. В чем может быть причина этого?

inf_data_gen = self.inf_get_next_batch(config)

def inf_get_next_batch(self, config):
        """Loop through batches for infinite epoches.
        """
        if config.dataset == 'mnist':
            num_batches = min(len(self.data_X), config.train_size) // config.batch_size
        else:
            self.data = glob(os.path.join("./data", config.dataset, self.input_fname_pattern))
            num_batches = min(len(self.data), config.train_size) // config.batch_size

        epoch = 0
        while True:
            epoch += 1
            for (step, d_train_feed_dict, g_train_feed_dict) in \
                    self.get_next_batch_one_epoch(num_batches, config):
                yield epoch, step, d_train_feed_dict, g_train_feed_dict

Ответы [ 2 ]

0 голосов
/ 05 июля 2018

Попробуйте это:

epoch, step, d_train_feed_dict, g_train_feed_dict = next(inf_data_gen)

См. Это: нет функции next () в генераторе доходности в python 3

В Python 3 требуется использовать next() вместо .next().

Предложено Диллоном Дэвисом: Вы также можете использовать .__next__(), хотя .next() лучше.

0 голосов
/ 05 июля 2018

Вам необходимо использовать:

next(inf_data_gen)

Вместо:

inf_data_gen.next()

Python 3 покончил с .next(), переименовав его в .__next__(), но лучше всего использовать вместо него next(generator).

...