预处理与工具

Keras提供了众多的预处理方法,用于生成和转换数据。这里针对几个常用的方法进行简要的介绍。

TimeseriesGenerator

用于生成批量时序数据。TimeseriesGenerator可以以一系列由相等间隔以及一些时间序列参数汇集的数据点作为输入,以生成用于训练和验证的批次数据。常用于序列数据的预处理。

构造方法为:

keras.preprocessing.sequence.TimeseriesGenerator(
	data,
	target,
	length,
	sampling_rate=1, 
	stride=1,
	start_index=0,
	end_index=None,
	shuffle=False, 
	reverse=False,
	batch_size=128)

其中相关参数的含义如下。

  • data,可索引的生成器,如列表或者Numpy array,需要包含连续的数据点,且应该为2D数据,0轴为时间维度。
  • targets,对应data的数据点的目标值,长度应与data相同。
  • length,输出序列的长度。
  • sampling_rate,序列内连续各个时间步的周期。
  • stride,连续输出序列之间的周期。
  • start_index,拆分数据的起始点。
  • end_index,拆分数据的结束点。
  • shuffle,指定是否打乱输出样本。
  • reverse,设定是否倒序输出样本。
  • batch_size,设定每个批次中的时间序列样本数。

Tokenizer

用于向量化文本语料库。能够使用两种方法对语料库进行向量化:将每个文本转化为一个整数序列或者将其转化为一个向量。常用于文本数据的预处理。

构造方法为:

keras.preprocessing.text.Tokenizer(
	num_words=None,
	filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}` ',
	lower=True,
	split=' ',
	char_level=False,
	oov_token=None,
	document_count=0)

其中相关参数的含义如下:

  • num_words,需要保留的最大词数,基于词频。
  • filters,用于过滤的字符串,其中的内容将从文本中去除。
  • lower,设定是否将文本转换为小写。
  • split,设定如何切割文本。
  • char_level,设定是否将字符视为标记。
  • oov_token,用于在text_to_sequence过程中替换词汇表以外的单词。

one-hot

将文本编码为大小为n的单词索引表。

构造方法为:

keras.preprocessing.text.one_hot(
	text,
	n,
	filters='!"#$%&()*+,-./:;<=>?@[\]^_`{|}` ',
	lower=True,
	split=' ')

其中相关参数的含义如下:

  • text,输入的文本。
  • n,词汇表的尺寸。

ImageDataGenerator

通过实时增强生成张量图像的数据批次。常用来利用可信图像来进行随机变换增加可用样本数量。

构造方法为:

keras.preprocessing.image.ImageDataGenerator(
	featurewise_center=False,
	samplewise_center=False,
	featurewise_std_normalization=False,
	samplewise_std_normalization=False,
	zca_whitening=False,
	zca_epsilon=1e-06,
	rotation_range=0,
	width_shift_range=0.0,
	height_shift_range=0.0,
	brightness_range=None,
	shear_range=0.0,
	zoom_range=0.0,
	channel_shift_range=0.0,
	fill_mode='nearest',
	cval=0.0,
	horizontal_flip=False,
	vertical_flip=False,
	rescale=None,
	preprocessing_function=None,
	data_format=None,
	validation_split=0.0,
	dtype=None)

其中相关参数的含义如下:

  • featurewise_center,将输入数据的均值设置为0,逐特征进行。
  • samplewise_center,将每个样本的均值设置为0。
  • featurewise_std_normalization,将输入除以数据标准差,逐特征进行。
  • samplewise_std_normalization,将每个输入除以标准差。
  • zca_epsilon,ZCA白化的epsilon值。
  • zca_whitening,设定是否启用ZCA白化。
  • rotation_range,随机旋转的度数范围。
  • width_shift_range,宽度改变范围。
    • 值为浮点型,如果\(<1.0\),则是除以总宽度的值,如果\(\ge 1.0\),则为像素值。
    • 值为1D数组,从数组中随机选择元素。
    • 值为整型,来自\([-n, +n]\)之间的整数。
  • height_shift_range,高度改变范围,取值规则与width_shift_range相同。
  • shear_range,剪切强度。
  • zoom_range,随机缩放范围。
  • channel_shift_range,随机通道转换范围。
  • fill_mode,边界以外点的填充模式。
  • cval,用于边界之外的点的值。
  • horizontal_flip,是否随机水平翻转。
  • vertical_flip,是否随机垂直翻转。
  • rescale,重缩放因子。
  • preprocessing_function,预处理方法。
  • data_format,图像数据格式,取值channels_first或者channels_last
  • validation_split,保留用于验证的图像的比例。
  • dtype,生成数组使用的数据类型。

to_categorical

将类向量转换为二进制类矩阵。

normalize

标准化一个Numpy array。

get_file

从一个URL下载文件,保存在缓存中。

打印输出模型概况。

plot_model

将Keras模型转换为dot格式并保存到文件中。