Keras: работа с наборами данных больших изображений - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь подобрать модель, используя большие наборы данных изображений. У меня оперативная память 14 ГБ, а набор данных имеет размер 40 ГБ. Я пытался использовать fit_generator, но в результате я получил метод, который не удаляет загруженные пакеты после использования темы.

Если есть какая-либо проблема или ресурсы, поблагодарите меня.

Спасибо.

Код генератора:

class Data_Generator(Sequence):

    def __init__(self, image_filenames, labels, batch_size):
        self.image_filenames, self.labels = image_filenames, labels
        self.batch_size = batch_size

    def __len__(self):
        return int(np.ceil(len(self.image_filenames) / float(self.batch_size)))
    def __format_labels__(self, gd_truth):
        cols=gd_truth.columns
        y=[]
        for col in cols:
            y.append(gd_truth[col].values)
        return y

    def __getitem__(self, idx):
        batch_x = self.image_filenames[idx * self.batch_size:(idx + 1) * self.batch_size]
        batch_y = self.labels[idx * self.batch_size:(idx + 1) * self.batch_size]
        gd_truth=pd.DataFrame(data=batch_y,columns=self.labels.columns)
        #gd_truth=batch_y
        return np.array([read_image(file_name) for file_name in batch_x]),self.__format_labels__(gd_truth) #np.array(batch_y)

Затем я создал два генератора для обучающих и проверочных изображений:

training_batch_generator = Data_Generator(training_filenames, trainTargets, batch_size)
mvalidation_batch_generator = Data_Generator(validation_filenames, valTargets, batch_size)

Вызов fit_generator выглядит следующим образом:

num_epochs=10
model.fit_generator(generator=my_training_batch_generator,
                                          steps_per_epoch=(num_training_samples // batch_size),
                                          epochs=num_epochs,
                                          verbose=1,
                                          validation_data=my_validation_batch_generator,
                                          validation_steps=(num_validation_samples // batch_size),
                                          max_queue_size=16)
...