从发电机获取下一个项目失败

use*_*609 5 python generator python-3.x

有代码段.运行该程序会收到以下错误

epoch, step, d_train_feed_dict, g_train_feed_dict = inf_data_gen.next()
AttributeError: 'generator' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)

相应的代码段列出如下.它背后的原因是什么?

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
Run Code Online (Sandbox Code Playgroud)

Dil*_*vis 1

您需要使用:

next(inf_data_gen)
Run Code Online (Sandbox Code Playgroud)

而不是:

inf_data_gen.next()
Run Code Online (Sandbox Code Playgroud)

Python 3 取消了.next(),将其重命名为.__next__(),但最好还是使用它next(generator)