text_dataset_from_directory
函數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,
verbose=True,
)
從目錄中的文字檔案產生 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 個)編碼為值為 0 或 1 的 float32
純量(例如,用於 binary_crossentropy
)。None
(無標籤)。"labels"
為 "inferred"
時有效。這是類別名稱的明確列表(必須與子目錄的名稱相符)。用於控制類別的順序(否則使用字母數字順序)。None
,則資料不會分批處理(資料集將產生個別樣本)。預設值為 32
。max_length
。False
,則會依字母數字順序排序資料。預設值為 True
。"training"
、"validation"
或 "both"
其中之一。僅當設定 validation_split
時使用。當 subset="both"
時,工具會返回一個包含兩個資料集的元組(分別為訓練資料集和驗證資料集)。False
。True
。返回值
一個 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 編碼。