詞彙處理器
tflearn.data_utils.VocabularyProcessor (max_document_length, min_frequency=0, vocabulary=None, tokenizer_fn=None)
將文件對應到單字識別序列。
參數
- max_document_length:文件的最大長度。如果文件較長,會修剪;如果較短,會補白。
- min_frequency:詞彙中單字的最小頻率。
- vocabulary:範疇詞彙物件。
屬性
- vocabulary_:範疇詞彙物件。
方法
fit (raw_documents, unused_y=None)
學習原始文件中所有詞彙的詞彙字典。
參數
- raw_documents:提供 字串 或 unicode 的可迭代物件。
- unused_y:以符合 estimator 的 fit 格式簽章。
傳回
self
fit_transform (raw_documents, unused_y=None)
學習詞彙字典,並傳回單字的索引。
參數
- raw_documents:提供 字串 或 unicode 的可迭代物件。
- unused_y:以符合 estimator 的 fit_transform 格式簽章。
傳回
X:可迭代物件,[n_samples, max_document_length] 單字識別矩陣。
restore (cls, filename)
從給定的檔案復原詞彙處理器。
參數
- filename:要載入的檔案路徑。
傳回
詞彙處理器物件。
reverse (documents)
將詞彙對應輸出的單字識別反轉為單字。
參數
- documents:可迭代物件,類別識別的清單。
傳回
以單字或文件的對應方式迭代。
save (filename)
將詞彙處理器儲存到給定的檔案。
參數
- filename:輸出檔案路徑。
transform (raw_documents)
將文件轉換為 word-id 矩陣。
使用事先擬合好的 vocabulary 或建構函式中提供者,將字詞轉換為 id。
參數
- raw_documents:提供 字串 或 unicode 的可迭代物件。
to_categorical
tflearn.data_utils.to_categorical (y, nb_classes)
將類別向量(0 到 nb_classes 的整數)轉換為二進位類別矩陣,供 categorical_crossentropy 使用。
參數
- y:
陣列
。待轉換的類別向量。 - nb_classes:
整數
。類別總數。
pad_sequences
tflearn.data_utils.pad_sequences (sequences, maxlen=None, dtype='int32', padding='post', truncating='post', value=0.0)
將每個序列內嵌至相同長度:最長序列的長度。如果提供了 maxlen,則任何長度大於 maxlen 的序列都會被截斷為 maxlen 長度。截斷會從序列的開頭或結尾(預設)進行。支援預內嵌和後內嵌(預設)。
參數
- sequences: 陣列清單,其中每個元素都是一個序列。
- maxlen: 整數,最大長度。
- dtype: 對所產生的序列執行的轉型類型。
- padding: 'pre' 或 'post',針對每個序列的內嵌位置,於其開頭或結尾執行。
- truncating: 'pre' 或 'post',移除長度大於 maxlen 的序列值,從序列開頭或結尾移除。
- value: 浮點數,用於將序列內嵌至所需值的數值。
傳回
x: Numpy 陣列
,維度為 (number_of_sequences, maxlen)
string_to_semi_redundant_sequences
tflearn.data_utils.string_to_semi_redundant_sequences (string, seq_maxlen=25, redun_step=3, char_idx=None)
將字串向量化,並傳回剖析過的序列和 target,以及相關聯的 dictionary。
參數
- string:
字串
。輸入文字檔案中的小寫文字。 - seq_maxlen:
整數
。序列的最大長度。預設:25。 - redun_step:
整數
。冗餘步伐。預設:3。 - char_idx: '字典'。用於將字元轉換為位置的字典。若此參數為 None,系統會自動產生字典。
傳回
元組:(inputs, targets, dictionary)
建置 HDF5 影像資料集
tflearn.data_utils.build_hdf5_image_dataset (target_path, image_shape, output_path='dataset.h5', mode='file', categorical_labels=True, normalize=True, grayscale=False, files_extension=None, chunks=False)
透過提供根資料夾或純文字檔案(包含圖片路徑和類別 ID),來建構 HDF5 資料集。
'資料夾' 模式:根資料夾應按以下方式排列。
ROOT_FOLDER -> SUBFOLDER_0 (CLASS 0) -> CLASS0_IMG1.jpg -> CLASS0_IMG2.jpg -> ...-> SUBFOLDER_1 (CLASS 1) -> CLASS1_IMG1.jpg -> ...-> ...
請注意,若子資料夾並非 0 到 n_classes 的整數,系統會依字母順序為每個子資料夾指派一個 ID。
'檔案' 模式:純文字檔案應按以下格式進行格式化。
/path/to/img1 class_id
/path/to/img2 class_id
/path/to/img3 class_id
範例
# Load path/class_id image file:
dataset_file = 'my_dataset.txt'
# Build a HDF5 dataset (only required once)
from tflearn.data_utils import build_hdf5_image_dataset
build_hdf5_image_dataset(dataset_file, image_shape=(128, 128), mode='file', output_path='dataset.h5', categorical_labels=True, normalize=True)
# Load HDF5 dataset
import h5py
h5f = h5py.File('dataset.h5', 'r')
X = h5f['X']
Y = h5f['Y']
# Build neural network and train
network = ...
model = DNN(network, ...)
model.fit(X, Y)
參數
- target_path:
字串
。根資料夾或圖片純文字檔案的路徑。 - image_shape:
元組 (高度, 寬度)
。圖片形狀。任何與該形狀不符的圖片,系統都會重新調整大小。 - output_path:
字串
。HDF5 資料集的輸出路徑。預設:'dataset.h5' - mode:
字串
,'檔案'、'資料夾'。資料來源模式。'資料夾' 會接受一個根資料夾,其每個子資料夾各自代表一個類別,且包含需加以分類的圖片。'檔案' 會接受包含每個圖片路徑及類別 ID 的單一純文字檔案。預設:'資料夾'。 - categorical_labels:
布林值
。如果為 True,標籤會轉換成二進制向量。 - normalize:
布林值
。如果為 True,會將所有圖片正規化,方法是將每個圖片陣列除以 255。 - grayscale:
布林值
。如果為 true,會將圖片轉換成灰階。 - files_extension:
字串清單
。允許的圖片檔案副檔名清單,例如 ['.jpg', '.jpeg', '.png']。如果為 None,則允許所有檔案。 - chunks:
布林值
。是否要將資料集分塊。只有在有實際需求時,才應使用分塊功能。請參閱 HDF5 說明文件。如果 chunks 為 'True',將會計算出敏感的預設值。
影像預載入器
tflearn.data_utils.image_preloader (target_path, image_shape, mode='file', normalize=True, grayscale=False, categorical_labels=True, files_extension=None, filter_channel=False)
建立一個 python 陣列 (Preloader
),可即時載入圖片 (來自磁碟或網址)。提供圖片範例的兩種方式為 'folder' 或 'file',請參閱以下規格說明。
'folder' 模式:從磁碟中載入圖片,並提供一個根資料夾。此資料夾應採用以下配置方式
ROOT_FOLDER -> SUBFOLDER_0 (CLASS 0) -> CLASS0_IMG1.jpg -> CLASS0_IMG2.jpg -> ...-> SUBFOLDER_1 (CLASS 1) -> CLASS1_IMG1.jpg -> ...-> ...
請注意,若子資料夾並非 0 到 n_classes 的整數,系統會依字母順序為每個子資料夾指派一個 ID。
'file' 模式:一個純文字檔案,其中列出每張圖片的路徑與類別 ID。此檔案應採用以下格式
/path/to/img1 class_id
/path/to/img2 class_id
/path/to/img3 class_id
請注意,即時載入圖片並轉換會浪費時間,因此您可以改用 build_hdf5_image_dataset
來建立一個 HDF5 資料集,以利快速擷取 (此函數會採用類似的引數)。
範例
# Load path/class_id image file:
dataset_file = 'my_dataset.txt'
# Build the preloader array, resize images to 128x128
from tflearn.data_utils import image_preloader
X, Y = image_preloader(dataset_file, image_shape=(128, 128), mode='file', categorical_labels=True, normalize=True)
# Build neural network and train
network = ...
model = DNN(network, ...)
model.fit(X, Y)
參數
- target_path:
字串
。根資料夾或圖片純文字檔案的路徑。 - image_shape:
元組 (高度, 寬度)
。圖片形狀。任何與該形狀不符的圖片,系統都會重新調整大小。 - mode:
字串
,'檔案'、'資料夾'。資料來源模式。'資料夾' 會接受一個根資料夾,其每個子資料夾各自代表一個類別,且包含需加以分類的圖片。'檔案' 會接受包含每個圖片路徑及類別 ID 的單一純文字檔案。預設:'資料夾'。 - categorical_labels:
布林值
。如果為 True,標籤會轉換成二進制向量。 - normalize:
布林值
。如果為 True,會將所有圖片正規化,方法是將每個圖片陣列除以 255。 - grayscale:
布林值
。如果為 true,會將圖片轉換成灰階。 - files_extension:
字串清單
。允許的圖片檔案副檔名清單,例如 ['.jpg', '.jpeg', '.png']。如果為 None,則允許所有檔案。 - filter_channel:
布林值
。如果為 true,會濾掉通道數不等於 3 的圖片。
傳回
(X, Y):其中 X 為圖片陣列,Y 為標籤陣列。
shuffle
tflearn.data_utils.shuffle (*arrs)
以同調的方式,同時洗牌指定的陣列,沿著第一個軸。
參數
- *arrs:每一個要以同調方式洗牌的陣列。
傳回
洗牌後的陣列組。
samplewise_zero_center
tflearn.data_utils.samplewise_zero_center (X)
對每個範例進行零中心化,方法是將其減去平均值。
參數
- X:
陣列
。要進行中心化的範例批次。
傳回
具有與輸入相同形狀的 numpy 陣列。
samplewise_std_normalization
tflearn.data_utils.samplewise_std_normalization (X)
以每個範例的標準差,對其進行縮放。
參數
- X:
陣列
。要進行縮放的範例批次。
傳回
具有與輸入相同形狀的 numpy 陣列。
featurewise_zero_center
tflearn.data_utils.featurewise_zero_center (X, mean=None)
使用指定的平均值,將每個範例進行零中心化。如果未指定,平均值會評估所有範例。
參數
- X:
陣列
。要進行中心化的範例批次。 - mean:
浮點數
。用於進行零中心化的平均值。如果不指定,會根據所提供的資料進行評估。
傳回
具有與輸入相同形狀的 numpy 陣列。或者如果未指定平均值,則為 (陣列、平均值) 的組。
featurewise_std_normalization
tflearn.data_utils.featurewise_std_normalization (X, std=None)
使用指定的標準差,將每個範例進行縮放。如果未指定標準差,會根據所有範例的資料來評估標準差。
參數
- X:
陣列
。要進行縮放的範例批次。 - std:
浮點數
。用於縮放資料的 standard deviation。如果不指定,會根據所提供的資料進行評估。
傳回
具有與輸入相同形狀的 numpy 陣列。或者如果未指定標準差,則為 (陣列、標準差) 的組。
load_csv
tflearn.data_utils.load_csv (filepath, target_column=-1, columns_to_ignore=None, has_header=True, categorical_labels=False, n_classes=None)
從 CSV 檔案載入資料。預設情況下,標籤會被視為最後一欄,但可透過填寫「目標欄」參數來變更。
參數
- filepath:
str
。csv 檔案路徑。 - target_column: 代表標籤的欄位 ID。預設值:-1(最後一欄)。
- columns_to_ignore:
int 清單
。要忽略的欄位索引清單。 - has_header:
bool
。csv 檔案是否有標題。 - categorical_labels:
bool
。如果為 True,標籤會以二進制向量的形式傳回(用於「分類交叉熵」)。 - n_classes:
int
。類別的總數(如果 categorical_labels 為 True,則需要)。
傳回
結果會是一個 (資料、目標) 元組。