词汇处理器

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,则需要)。

返回值

一个元组 (数据, 目标)。