РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
619 of 824 menu

Функция text_dataset_from_directory

Функция text_dataset_from_directory создает датасет tf.data.Dataset из текстовых файлов, расположенных в директории. Имена подпапок внутри директории используются как метки классов. Первым параметром функция принимает путь к директории с данными. Вторым параметром можно передать размер батча. Третьим параметром задается размер валидационной выборки. Также можно указать размер изображения, зерно генератора случайных чисел и другие параметры.

Синтаксис

tf.keras.utils.text_dataset_from_directory( directory, labels='inferred', label_mode='int', class_names=None, batch_size=32, max_length=None, shuffle=True, seed=None, validation_split=None, subset=None )

Пример

Давайте создадим тестовую директорию с двумя классами текстовых файлов и загрузим из нее датасет:

import tensorflow as tf import os # create sample directory structure base_dir = '/tmp/text_data' os.makedirs(os.path.join(base_dir, 'positive'), exist_ok=True) os.makedirs(os.path.join(base_dir, 'negative'), exist_ok=True) with open(os.path.join(base_dir, 'positive', 'a.txt'), 'w') as f: f.write('abcde') with open(os.path.join(base_dir, 'positive', 'b.txt'), 'w') as f: f.write('model.keras') with open(os.path.join(base_dir, 'negative', 'c.txt'), 'w') as f: f.write('abcde') with open(os.path.join(base_dir, 'negative', 'd.txt'), 'w') as f: f.write('model.keras') ds = tf.keras.utils.text_dataset_from_directory( base_dir, batch_size=2, seed=0 ) for texts, labels in ds.take(1): print(texts) print(labels)

Результат выполнения кода:

Found 4 files belonging to 2 classes. tf.Tensor([b'abcde' b'model.keras'], shape=(2,), dtype=string) tf.Tensor([0 1], shape=(2,), dtype=int32)

Пример

Давайте разделим данные на обучающую и валидационную выборки с помощью параметра validation_split:

import tensorflow as tf import os base_dir = '/tmp/text_data' os.makedirs(os.path.join(base_dir, 'positive'), exist_ok=True) os.makedirs(os.path.join(base_dir, 'negative'), exist_ok=True) with open(os.path.join(base_dir, 'positive', 'a.txt'), 'w') as f: f.write('abcde') with open(os.path.join(base_dir, 'positive', 'b.txt'), 'w') as f: f.write('model.keras') with open(os.path.join(base_dir, 'negative', 'c.txt'), 'w') as f: f.write('abcde') with open(os.path.join(base_dir, 'negative', 'd.txt'), 'w') as f: f.write('model.keras') train_ds = tf.keras.utils.text_dataset_from_directory( base_dir, batch_size=2, validation_split=0.5, subset='training', seed=0 ) val_ds = tf.keras.utils.text_dataset_from_directory( base_dir, batch_size=2, validation_split=0.5, subset='validation', seed=0 ) print('Train batches:', len(train_ds)) print('Val batches:', len(val_ds))

Результат выполнения кода:

Found 4 files belonging to 2 classes. Using 2 files for training. Found 4 files belonging to 2 classes. Using 2 files for validation. Train batches: 1 Val batches: 1

Пример

Давайте ограничим длину текстов с помощью параметра max_length и загрузим датасет:

import tensorflow as tf import os base_dir = '/tmp/text_data' os.makedirs(os.path.join(base_dir, 'positive'), exist_ok=True) os.makedirs(os.path.join(base_dir, 'negative'), exist_ok=True) with open(os.path.join(base_dir, 'positive', 'a.txt'), 'w') as f: f.write('abcde') with open(os.path.join(base_dir, 'positive', 'b.txt'), 'w') as f: f.write('model.keras') with open(os.path.join(base_dir, 'negative', 'c.txt'), 'w') as f: f.write('abcde') with open(os.path.join(base_dir, 'negative', 'd.txt'), 'w') as f: f.write('model.keras') ds = tf.keras.utils.text_dataset_from_directory( base_dir, batch_size=2, max_length=3, seed=0 ) for texts, labels in ds.take(1): print(texts)

Результат выполнения кода:

Found 4 files belonging to 2 classes. tf.Tensor([b'abc' b'mod'], shape=(2,), dtype=string)

Смотрите также

  • функцию pad_sequences,
    которая дополняет последовательности до одинаковой длины
  • функцию to_number,
    которая преобразует строки в числа
  • функцию unicode_split,
    которая разбивает строки на подстроки Unicode
  • функцию reduce_join,
    которая объединяет строки в одно целое
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить