Я использую задание Spark для создания файла TFRecord
, который будет моим словарным файлом пар (слово, количество).
Я хочу загрузить весь файл сразу, используя API набора данных, поскольку мой файл со словарем может находиться в HDFS и может быть разделен на несколько физических файлов. Тем не менее, я нахожу это довольно неинтуитивным. Вот мой код:
def parse(example):
parsed = tf.parse_single_example(example, features={
'token': tf.FixedLenFeature([], dtype=tf.string),
'count': tf.FixedLenFeature([], dtype=tf.int64)
})
return parsed['token'], parsed['count']
filenames = tf.gfile.Glob(filenames)
dataset = tf.data.TFRecordDataset(filenames)
dataset = dataset.map(parse)
dataset = dataset.batch(MAX_VOCAB_FILE)
iterator = dataset.make_one_shot_iterator()
token, token_count = iterator.get_next()
Использование огромного, фиксированного предварительного размера пакета — это единственный способ, которым я могу думать о том, чтобы получить все данные сразу в тензоре shape=(num_entries,)
. Кажется, он работает довольно медленно.
Есть ли способ лучше?