Токенизация набора данных TFRecords - PullRequest
0 голосов
/ 04 октября 2019

Ранее я сохранял свои 5-гигабайтные данные json в виде нескольких файлов tfrecords и считывал их со следующими данными:

import glob
train_files = [file for file in glob.glob("train/*.tfrecords")
test_files = [file for file in glob.glob("test/*.tfrecords")

raw_train = tf.data.TFRecordDataset(train_files)
raw_test = tf.data.TFRecordDataset(test_files)

При печати после анализа (для ясности пропущено) отображается следующее

for record in parsed_train.take(1):
  print(record)
{
  'sentiment': <tf.Tensor: id=52, shape=(), dtype=int64, numpy=1>,
  'text': <tf.Tensor: id=53, shape=(), dtype=string, numpy=b'Great food!'>
}

Я следую учебному пособию, в котором мне нужно передать Keras Tokenizer список строк из наборов данных test и train. Я попытался создать пустой список и добавить каждую запись.

from tensorflow.python.keras.preprocessing.text import Tokenizer

num_words = 10000
tokenizer = Tokenizer(num_words=num_words)

l = []
for train_record in parsed_train.take(-1):
  l.append(train_record['text'].numpy().decode('utf-8'))

for test_record in parsed_test.take(-1):
  l.append(test_record['text'].numpy().decode('utf-8'))

Однако это занимает невероятно много времени и часто приводит к поломке моего 4-гигабайтного оперативного ноутбука. Есть ли лучший способ выполнить эту задачу - например, маркировать тензоры TF, не имея его в виде списка? Должен ли я вместо этого добавить свои строки в массив Numpy?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...