Как преобразовать большой набор данных в итеративный в пакетном режиме во время выполнения - PullRequest
0 голосов
/ 12 октября 2019

Я новичок в Python, Tensorflow и Datasets в целом. Я много изучал тему тренировочных данных, генерируемых во время выполнения из загруженных в память наборов данных, но, похоже, застрял.

У меня большой список Python для обучающих данных, это незаполненный списоксписки, миллионыКаждый подсписок имеет длину около 32 пунктов. Я пытался передать это непосредственно в мою модель Tensorflow различными способами, но, очевидно, машинное обучение требовательно к тому, как обрабатываются и сортируются его данные.

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

Мои данные отформатированы так же, как показано ниже:

raw_data = [["red","green","blue"],["orange","red"],["brown","red"]]

Мне нужно перебирать каждый список,сопоставление одной метки со списком тренировок, состоящим из каждого неиспользованного элемента в том же подсписке. Я хотел бы достичь точки, где я мог бы сделать что-то вроде следующего:

print(next(my_iterator))
#outputs: ("red",["green", blue"])

print(next(my_iterator))
#outputs: ("green",["red", blue"])

print(next(my_iterator))
#outputs: ("blue",["red", green"])

print(next(my_iterator))
#outputs: ("orange",["red"])

Мой «текущий код» похож на

raw_data = [["red","green","blue"],["orange","red"],["brown","red"]]
processed_data = []

for sl in raw_data:
    for si in sl:
        label = si
        output = sl[:]
        output.remove(si)
        processed_data.append([label, output])

Но это делает все сразу,Есть ли способ, которым я могу сделать это по одному, используя Tensorflow, чтобы не тратить впустую весь мой жесткий диск или память?

Порядок списка «обучения» не имеет значения, поскольку каждый вывод будет на практикевместо этого следует преобразовать его в горячий список.

Также важно, чтобы список не был предварительно сгенерирован перед итерацией, поскольку необработанные данные, которые я использую, слишком велики длянапример.

...