词汇处理器
tflearn.data_utils.VocabularyProcessor (max_document_length, min_frequency=0, vocabulary=None, tokenizer_fn=None)
将文档映射到单词 ID 序列。
参数
- max_document_length:文档的最大长度。如果文档更长,它们将被截断;如果更短,则将被填充。
- min_frequency:词汇表中单词的最低频率。
- vocabulary:CategoricalVocabulary 对象。
属性
- vocabulary_:CategoricalVocabulary 对象。
方法
fit (raw_documents, unused_y=None)
学习原始文档中所有标记的词汇字典。
参数
- raw_documents:一个可迭代对象,产生字符串或 Unicode 字符串。
- unused_y:匹配估计器的 fit 格式签名。
返回值
self
fit_transform (raw_documents, unused_y=None)
学习词汇字典并返回单词的索引。
参数
- raw_documents:一个可迭代对象,产生字符串或 Unicode 字符串。
- unused_y:匹配估计器的 fit_transform 签名。
返回值
X:可迭代对象,[n_samples, max_document_length] 单词 ID 矩阵。
restore (cls, filename)
从给定文件恢复词汇处理器。
参数
- filename:要从中加载的文件的路径。
返回值
VocabularyProcessor 对象。
reverse (documents)
反转词汇映射到单词的输出。
参数
- documents:可迭代对象,类 ID 列表。
返回值
映射到单词文档的迭代器。
save (filename)
将词汇处理器保存到给定文件。
参数
- filename:输出文件的路径。
transform (raw_documents)
将文档转换为单词 ID 矩阵。
使用 fit 拟合的词汇表或构造函数中提供的词汇表将单词转换为 ID。
参数
- raw_documents:一个可迭代对象,产生字符串或 Unicode 字符串。
转换为独热编码
tflearn.data_utils.to_categorical (y, nb_classes)
将类向量(从 0 到 nb_classes 的整数)转换为二进制类矩阵,用于 categorical_crossentropy。
参数
- y:
数组
。要转换的类向量。 - nb_classes:
整数
。类的总数。
填充序列
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:维度为 (number_of_sequences, maxlen) 的 numpy 数组
。
字符串转换为半冗余序列
tflearn.data_utils.string_to_semi_redundant_sequences (string, seq_maxlen=25, redun_step=3, char_idx=None)
向量化字符串并返回解析后的序列和目标,以及关联的字典。
参数
- string:
字符串
。来自输入文本文件的文本(小写)。 - seq_maxlen:
整数
。序列的最大长度。默认值:25。 - redun_step:
整数
。冗余步长。默认值:3。 - char_idx:'字典'。用于将字符转换为位置的字典。如果为 None,则将自动生成。
返回值
一个元组:(输入,目标,字典)
构建 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 数据集。
'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' 模式:纯文本文件应按如下格式设置
/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:
字符串
,取值为 ['file', 'folder']。数据源模式。'folder' 接受一个根文件夹,其每个子文件夹代表一个类,其中包含要分类的图像。'file' 接受一个包含每个图像路径及其类 ID 的纯文本文件。默认值:'folder'。 - 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
),它可以动态加载图像(从磁盘或 URL)。有两种方法可以提供图像样本:'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:
字符串
,取值为 ['file', 'folder']。数据源模式。'folder' 接受一个根文件夹,其每个子文件夹代表一个类,其中包含要分类的图像。'file' 接受一个包含每个图像路径及其类 ID 的纯文本文件。默认值:'folder'。 - categorical_labels:
布尔值
。如果为 True,则将标签转换为二进制向量。 - normalize:
布尔值
。如果为 True,则通过将每个图像数组除以 255 来对所有图像进行归一化。 - grayscale:
布尔值
。如果为 true,则将图像转换为灰度。 - files_extension:
字符串列表
。允许的图像文件扩展名列表,例如 ['.jpg', '.jpeg', '.png']。如果为 None,则允许所有文件。 - filter_channel:
布尔值
。如果为 true,则应过滤掉通道数不是 3 的图像。
返回值
(X, Y):其中 X 是图像数组,Y 是标签数组。
随机打乱
tflearn.data_utils.shuffle (*arrs)
沿第一个轴同时随机打乱给定的数组。
参数
- *arrs:要同时随机打乱的每个数组。
返回值
随机打乱后的数组元组。
样本级零均值化
tflearn.data_utils.samplewise_zero_center (X)
通过减去每个样本的均值来对其进行零均值化。
参数
- X:
数组
。要进行零均值化的样本批次。
返回值
一个与输入形状相同的 numpy 数组。
样本级标准差归一化
tflearn.data_utils.samplewise_std_normalization (X)
使用每个样本的标准差对其进行缩放。
参数
- X:
数组
。要缩放的样本批次。
返回值
一个与输入形状相同的 numpy 数组。
特征级零均值化
tflearn.data_utils.featurewise_zero_center (X, mean=None)
使用指定的均值对每个样本进行零均值化。如果未指定,则对所有样本计算均值。
参数
- X:
数组
。要进行零均值化的样本批次。 - mean:
浮点数
。用于零均值化的均值。如果未指定,则将根据提供的数据进行计算。
返回值
一个与输入形状相同的 numpy 数组。如果未指定均值,则返回一个元组 (数组, 均值)。
特征级标准差归一化
tflearn.data_utils.featurewise_std_normalization (X, std=None)
使用指定的标准差对每个样本进行缩放。如果未指定标准差,则对所有样本数据计算标准差。
参数
- X:
数组
。要缩放的样本批次。 - std:
浮点数
。用于缩放数据的标准差。如果未指定,则将根据提供的数据进行计算。
返回值
一个与输入形状相同的 numpy 数组。如果未指定标准差,则返回一个元组 (数组, 标准差)。
加载 CSV 文件
tflearn.data_utils.load_csv (filepath, target_column=-1, columns_to_ignore=None, has_header=True, categorical_labels=False, n_classes=None)
从 CSV 文件加载数据。默认情况下,标签被认为是最后一列,但可以通过填写 'target_column' 参数来更改。
参数
- filepath:
字符串
。csv 文件的路径。 - target_column:表示标签的列的 ID。默认值:-1(最后一列)。
- columns_to_ignore:
整数列表
。要忽略的列索引列表。 - has_header:
布尔值
。csv 文件是否包含标题。 - categorical_labels:
布尔值
。如果为 True,则将标签作为二进制向量返回(与 'categorical_crossentropy' 一起使用)。 - n_classes:
整数
。类的总数(如果 categorical_labels 为 True,则需要)。
返回值
一个元组 (数据, 目标)。