Я не использовал эту функцию раньше, но может быть что-то вроде:
class CsvSequence(Sequence):
def __init__(self, batchnames):
self.batchnames = batchnames
def __len__(self):
return len(self.batchnames)
def __getitem__(self, i):
name = self.batchnames[i]
X = pd.read_csv(name + '-X.csv')
Y = pd.read_csv(name + '-Y.csv')
return X, Y
будет работать. вам нужно предварительно обработать данные, разбив файл размером 10 ГБ, например, на 10 файлов меньшего размера. утилита Unix split
может быть достаточной, если ваши CSV-файлы содержат одну запись на строку (большинство делают)
в качестве неполного примера использования этого:
seq = CsvSequence([
'data-1', 'data-2', 'data-3'])
model.fit_generator(seq)
но обратите внимание, что вы быстро захотите сделать что-то более эффективное, приведенное выше может привести к тому, что ваши CSV-файлы будут прочитаны много раз. меня не удивит, если эта загрузка займет больше времени, чем все остальное, вместе взятые
. Одним из предложений будет предварительная обработка файлов перед тренировкой, сохранение их в numpy
двоичных файлах . затем двоичные файлы могут mmap
редактироваться, тогда как load
ing , что намного эффективнее.