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 編碼。