audio_dataset_from_directory
函数keras.utils.audio_dataset_from_directory(
directory,
labels="inferred",
label_mode="int",
class_names=None,
batch_size=32,
sampling_rate=None,
output_sequence_length=None,
ragged=False,
shuffle=True,
seed=None,
validation_split=None,
subset=None,
follow_links=False,
verbose=True,
)
从目录中的音频文件生成一个 tf.data.Dataset
对象。
如果您的目录结构如下:
main_directory/
...class_a/
......a_audio_1.wav
......a_audio_2.wav
...class_b/
......b_audio_1.wav
......b_audio_2.wav
那么调用 audio_dataset_from_directory(main_directory, labels='inferred')
将返回一个 tf.data.Dataset
,该数据集会从子目录 class_a
和 class_b
中生成音频文件批次,并附带标签 0 和 1(0 对应于 class_a
,1 对应于 class_b
)。
目前仅支持 .wav
文件。
参数
labels
为 "inferred"
,则该目录应包含子目录,每个子目录包含一个类别的音频文件。否则,将忽略目录结构。None
(无标签),或者一个与目录中找到的音频文件数量大小相同的整数标签列表/元组。标签应按照音频文件路径的字母数字顺序排序(通过 Python 中的 os.walk(directory)
获取)。labels
编码方式的字符串。选项包括:"int"
:表示标签编码为整数(例如用于 sparse_categorical_crossentropy
损失函数)。"categorical"
:表示标签编码为分类向量(例如用于 categorical_crossentropy
损失函数)。"binary"
:表示标签(只能有 2 个)编码为 float32
标量,值为 0 或 1(例如用于 binary_crossentropy
损失函数)。None
(无标签)。"inferred"
时有效。这是明确的类别名称列表(必须与子目录名称匹配)。用于控制类别的顺序(否则使用字母数字顺序)。None
,数据将不会分批(数据集将产生单个样本)。output_sequence_length
。如果设置为 None
,则同一批次中的所有序列将被填充到该批次中最长序列的长度。False
。False
,则按字母数字顺序对数据进行排序。默认为 True
。"training"
、"validation"
或 "both"
之一。仅当设置了 validation_split
时使用。False
。True
。返回值
一个 tf.data.Dataset
对象。
label_mode
是 None
,它将生成形状为 (batch_size,)
的 string
张量,包含一批音频文件的内容。(audio, labels)
,其中 audio
的形状为 (batch_size, sequence_length, num_channels)
,而 labels
遵循下面描述的格式。关于标签格式的规则
label_mode
是 int
,标签是一个形状为 (batch_size,)
的 int32
张量。label_mode
是 binary
,标签是一个形状为 (batch_size, 1)
的 float32
张量,包含 1 和 0。label_mode
是 categorical
,标签是一个形状为 (batch_size, num_classes)
的 float32
张量,表示类别索引的 one-hot 编码。