keras.utils.Sequence- объект не является итератором - PullRequest
0 голосов
/ 28 апреля 2019
class CIFAR10Sequence(Sequence):

    def __init__(self, x_set, y_set, batch_size):
        self.x, self.y = x_set, y_set
        self.epoch = 0
        self.batch = 0
        self.batch_size = batch_size
        self.per = 4

    def __len__(self):
        return int(np.ceil(len(self.x) / float(self.batch_size)))

    def __getitem__(self, idx):
        batch_x = self.x[int(np.ceil(self.x.shape[0]*(self.per/100)))]
        batch_y = self.y[int(np.ceil(self.x.shape[0]*(self.per/100)))]
        return np.array(batch_x), np.array(batch_y)
        return (batch_x, batch_y)

    def on_batch_end(self):
        if self.epoch % 100 == 0:
            self.per = self.per*1.9
        self.epoch += 1

train_datagen = CIFAR10Sequence(new_x_sort, new_x_sort, 100)
test_datagen = CIFAR10Sequence(cifar100_dataset.x_test,
                               cifar100_dataset.x_test, 100)

model.fit_generator(generator=train_datagen, steps_per_epoch=len(new_x_sort)//100, epochs=20)

но я получаю: TypeError: 'CIFAR10Sequence' object is not an iterator

1 Ответ

0 голосов
/ 28 апреля 2019

Вам нужна функция __iter__() в CIFAR10Sequence.Что-то вроде

def __iter__(self):
    self.cur_idx += 1
    return self[self.cur_idx]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...