text_dataset_from_directory
函数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,
follow_links=False,
)
从目录中的文本文件生成一个 tf.data.Dataset
对象。
如果你的目录结构是
main_directory/
...class_a/
......a_text_1.txt
......a_text_2.txt
...class_b/
......b_text_1.txt
......b_text_2.txt
那么调用 text_dataset_from_directory(main_directory, labels='inferred')
将返回一个 tf.data.Dataset
,它将从子目录 class_a
和 class_b
中生成文本批次,以及标签 0 和 1 (0 对应于 class_a
,1 对应于 class_b
)。
目前只支持 .txt
文件。
参数
labels
为 "inferred"
,它应该包含子目录,每个子目录包含一个类的文本文件。否则,目录结构将被忽略。"inferred"
(标签从目录结构生成),None
(无标签),或者一个整数标签的列表/元组,其大小与目录中找到的文本文件数量相同。标签应该按照文本文件路径的字母数字顺序排序(通过 Python 中的 os.walk(directory)
获取)。labels
编码的字符串。选项包括"int"
:表示标签被编码为整数(例如,用于 sparse_categorical_crossentropy
损失函数)。"categorical"
:表示标签被编码为分类向量(例如,用于 categorical_crossentropy
损失函数)。"binary"
:表示标签(只能是 2 类)被编码为 float32
值为 0 或 1 的标量(例如,用于 binary_crossentropy
)。None
(无标签)。"labels"
为 "inferred"
时有效。这是类的名称的明确列表(必须与子目录名称匹配)。用于控制类的顺序(否则使用字母数字顺序)。None
,数据将不会被分批(数据集将生成单个样本)。max_length
。True
。如果设置为 False
,数据将按字母数字顺序排序。"training"
、"validation"
或 "both"
之一。仅在设置了 validation_split
时使用。当 subset="both"
时,该工具函数返回一个包含两个数据集的元组(分别是训练数据集和验证数据集)。False
。返回值
一个 tf.data.Dataset
对象。
label_mode
为 None
,它将生成形状为 (batch_size,)
的 string
张量,包含一批文本文件的内容。(texts, labels)
,其中 texts
的形状为 (batch_size,)
,并且 labels
的格式如下所述。关于标签格式的规则
label_mode
为 int
,标签是一个形状为 (batch_size,)
的 int32
张量。label_mode
为 binary
,标签是一个形状为 (batch_size, 1)
的由 1 和 0 组成的 float32
张量。label_mode
为 categorical
,标签是一个形状为 (batch_size, num_classes)
的 float32
张量,表示类索引的 one-hot 编码。