Ранее я сохранял свои 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?