Класс TextLineDataset
Класс TextLineDataset создает датасет,
каждый элемент которого представляет собой
одну строку текстового файла. Первым параметром
класс принимает путь к файлу или список путей.
Вторым параметром можно передать размер буфера
чтения, третьим - номер строки, с которой нужно
начать чтение, а четвертым - число строк для
пропуска после начала чтения.
Синтаксис
tf.data.TextLineDataset(filenames, [compression_type], [buffer_size], [num_parallel_reads])
Пример
Давайте создадим текстовый файл и прочитаем
его строки с помощью класса TextLineDataset:
import tensorflow as tf
with open('sample.txt', 'w') as f:
f.write('abcde\n')
f.write('model.keras\n')
f.write('hello\n')
ds = tf.data.TextLineDataset('sample.txt')
for line in ds:
print(line.numpy())
Результат выполнения кода:
b'abcde'
b'model.keras'
b'hello'
Пример
Давайте прочитаем несколько файлов одним датасетом, передав список путей:
import tensorflow as tf
with open('file1.txt', 'w') as f:
f.write('first line\n')
f.write('second line\n')
with open('file2.txt', 'w') as f:
f.write('third line\n')
ds = tf.data.TextLineDataset(['file1.txt', 'file2.txt'])
for line in ds:
print(line.numpy())
Результат выполнения кода:
b'first line'
b'second line'
b'third line'
Пример
Давайте применим преобразование map,
чтобы декодировать строки из байтов в текст:
import tensorflow as tf
with open('sample.txt', 'w') as f:
f.write('abcde\n')
f.write('model.keras\n')
ds = tf.data.TextLineDataset('sample.txt')
ds = ds.map(lambda x: tf.strings.decode(x))
for line in ds:
print(line.numpy().decode('utf-8'))
Результат выполнения кода:
abcde
model.keras
Смотрите также
-
класс
TFRecordDataset,
который читает данные из файлов формата TFRecord -
класс
FixedLengthRecordDataset,
который читает записи фиксированной длины из файлов -
класс
Iterator,
который предоставляет доступ к элементам датасета -
функцию
split_dataset,
которая разделяет датасет на несколько частей