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 個)編碼為值為 0 或 1 的 float32
純量(例如,用於 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)
的 1 和 0 的 float32
張量。label_mode
為 categorical
,則標籤是形狀為 (batch_size, num_classes)
的 float32
張量,表示類別索引的 one-hot 編碼。