Ошибки и трудности с: Генераторы Keras с данными h5: Отмененные операции - PullRequest
0 голосов
/ 05 апреля 2020

У меня много ошибок / проблем с генераторами Keras и мультиобработкой.

Я использовал:

history = model.fit(training_generator,
        steps_per_epoch=trainingSetSize // batch_size,
        epochs=epochs,
        verbose=1,
        validation_data=validationGenerator,
        validation_steps= validationSetSize // batch_size,
        callbacks=callbacks,
        use_multiprocessing=True,
        workers=nb_workers,
        max_queue_size=2*nb_workers)

для запуска обучения.

My генератор плюется партиями (batch_size, 64,64,2) тензоров. Одной из проблем является то, что я замечаю следующие предупреждения / сообщения об ошибках:

Error occurred when finalizing GeneratorDataset iterator: Cancelled: Operation was cancelled

, хотя я добавил steps_per_epoch = X_size // batch_size,

Также добавив print () внутри генератора Я замечаю, что в конце эпохи он генерирует «пустой» тензор формы: (0,64,64,2) ...

Есть идеи, предложения / комментарии / ответы?

это код генератора:

class custom_gen(Sequence):

    def __init__(self, fn, datasetSize, batch_size, trainingsetName,trainingsetTargetsName):
        self.fn=fn
        self.datasetSize= datasetSize
        self.batch_size = batch_size
        self.trainingsetTargetsName = trainingsetTargetsName
        self.trainingsetName = trainingsetName
        self.lock = threading.Lock()

    #compulsory method: total number of batches that the generator must produce
    def __len__(self):
        return self.datasetSize // self.batch_size

    #idx arg is managed by Python/Keras by themselves!?
    def __getitem__(self, idx):
        with self.lock:
            f=h5py.File(self.fn,'r')    
            X=f[self.trainingsetName][idx * self.batch_size:(idx + 1) * self.batch_size]
            Y=f[self.trainingsetTargetsName][idx * self.batch_size:(idx + 1) * self.batch_size]


            print('Generated X.shape='+str(X.shape))
            print('Generated Y.shape='+str(Y.shape))
            return X,Y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...