MemoryError при использовании генераторов данных Keras - PullRequest
0 голосов
/ 25 октября 2019

Поскольку мой набор данных достаточно большой, чтобы вместить память, я пытаюсь использовать генератор данных с кератами для обработки набора данных обучения на лету перед отправкой их в модель. Проблема в том, что мой генератор пытается обработать все экземпляры набора данных перед началом обучения модели. И из-за размера набора данных я всегда получаю MemoryError.

Есть ли способ выполнить предварительную обработку небольшими партиями перед отправкой каждого пакета в модель?

Вот как я называю своюгенератор:

history = model.fit_generator(dataGen,
    validation_data=dataGenTest,
    epochs=N_EPOCHS,
    callbacks=[mc],
    verbose=2)

Вот мой генератор getitem метод:

def __getitem__(self, index):
    batch_indexs = self.indexes[index * self.batch_size:(index + 1) * self.batch_size]
    batch_X = [self.dataX[k] for k in batch_indexs]
    y = np.array([self.dataY[k] for k in batch_indexs]
    X = self.data_generation(batch_X)
    return X, y

А вот мой генератор data_generation метод:

def data_generation(self, batch_X):
    X = []
    with self.graph.as_default():
        for text in batch_X:
            common_seg_input = np.zeros((1, 500), dtype=np.float32)
            index, segment = self.tokenizer.encode(first=text, max_len=500)
            w = self.bert_model.predict([[index],[segment]])[0]
            X.append(w)
        X = np.array(X)
        return X
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...