[source]

TimeseriesGenerator

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

用于生成批时间数据的实用程序类.

此类采用等间隔收集的一系列数据点以及时间序列参数(例如步幅,历史长度等)来生成用于训练/验证的批次.

Arguments

  • data :包含连续数据点(时间步长)的可索引生成器(例如列表或Numpy数组). 数据应为2D,并且轴0应为时间维度.
  • 目标 :与data时间步长相对应的目标. 它的长度应与data相同.
  • length :输出序列的长度(以时间步长为单位).
  • sample_rate :序列中连续的各个时间步之间的时间间隔. 对于速率r ,时间步长data[i]data[ir] ,... data[i - length]用于创建采样序列.
  • 步幅 :连续输出序列之间的周期. 对于跨度s ,连续的输出样本将以data[i]data[i+s]data[i+2*s]等为中心.
  • start_index :早于start_index数据点将不在输出序列中使用. 这对于保留部分数据用于测试或验证很有用.
  • end_index :晚于end_index数据点将不在输出序列中使用. 这对于保留部分数据用于测试或验证很有用.
  • 随机播放 :是随机播放输出样本,还是按时间顺序绘制它们.
  • reverse :Boolean:如果为true ,则每个输出样本中的时间步将按相反的时间顺序排列.
  • batch_size :每个批次中的时间序列样本数(也许最后一个除外).

Returns

A Sequence instance.

Examples

from keras.preprocessing.sequence import TimeseriesGenerator
import numpy as np

data = np.array([[i] for i in range(50)])
targets = np.array([[i] for i in range(50)])

data_gen = TimeseriesGenerator(data, targets,
                               length=10, sampling_rate=2,
                               batch_size=2)
assert len(data_gen) == 20

batch_0 = data_gen[0]
x, y = batch_0
assert np.array_equal(x,
                      np.array([[[0], [2], [4], [6], [8]],
                                [[1], [3], [5], [7], [9]]]))
assert np.array_equal(y,
                      np.array([[10], [11]]))

pad_sequences

keras.preprocessing.sequence.pad_sequences(sequences, maxlen=None, dtype='int32', padding='pre', truncating='pre', value=0.0)

将序列填充到相同的长度.

此函数将num_samples序列列表(整数列表)转换为2D Numpy形状的数组(num_samples, num_timesteps) . num_timestepsmaxlen参数(如果提供),或者是最长序列的长度.

小于num_timesteps序列在末尾填充value .

长度大于num_timesteps序列num_timesteps被截断,以使其适合所需的长度. 填充或截断发生的位置分别由参数paddingtruncating确定.

预填充是默认设置.

Arguments

  • sequence :列表列表,其中每个元素都是一个序列.
  • maxlen :Int,所有序列的最大长度.
  • dtype :输出序列的类型. 要填充长度可变的字符串序列,可以使用object .
  • padding :字符串," pre"或" post":在每个序列之前或之后填充.
  • 截断 :字符串," pre"或" post":从大于maxlen序列中删除值,无论是在序列的开头还是结尾.
  • value :浮点数或字符串,填充值.

Returns

  • x :形状为(len(sequences), maxlen)块状数组

Raises

  • ValueError :如果用于truncatingpadding值无效,或者对于sequences条目的形状无效.

skipgrams

keras.preprocessing.sequence.skipgrams(sequence, vocabulary_size, window_size=4, negative_samples=1.0, shuffle=True, categorical=False, sampling_table=None, seed=None)

生成skipgram单词对.

This function transforms a sequence of word indexes (list of integers) into tuples of words of the form:

  • (单词,同一窗口中的单词),带有标签1(正样本).
  • (单词,来自词汇表的随机单词),带有标签0(负样本).

在Mikolov等人的这份基因组论文中阅读有关Skipgram的更多信息: 向量空间中单词表示的有效估计

Arguments

  • sequence :一个单词序列(句子),编码为单词索引(整数)列表. 如果使用sampling_table ,则期望单词索引与参考数据集中单词的排名相匹配(例如10将编码第10个最频繁出现的标记). 请注意,索引0应该是一个非单词,将被跳过.
  • vocabulary_size :整数,最大可能单词索引+1
  • window_size :整数,采样窗口的大小(技术上是半窗口). 单词w_i的窗口将为[i - window_size, i + window_size+1] .
  • negative_samples :浮点数> =0.0表示无负(即随机)样本. 1为与阳性样品相同的数字.
  • 随机播放 :是否在返回之前先对单词进行随机播放.
  • 绝对的 :布尔. 如果为False,则标签将为整数(例如[0, 1, 1 .. ] );如果为True ,则标签将为类别,例如[[1,0],[0,1],[0,1] .. ] .
  • samples_table :大小为vocabulary_size一维数组,其中条目i编码对等级为i的单词进行采样的概率.
  • 种子 :随机种子.

Returns

夫妇,标签: couples是整数对, labels是0或1.

Note

按照惯例,词汇表中的索引0是非单词,将被跳过.


make_sampling_table

keras.preprocessing.sequence.make_sampling_table(size, sampling_factor=1e-05)

生成基于单词等级的概率抽样表.

用于生成sampling_table的说法skipgrams . sampling_table[i]是在数据集中采样第i个最常见单词的概率(为了保持平衡,应更不频繁地采样更常见的单词).

采样概率是根据word2vec中使用的采样分布生成的:

p(word) = (min(1, sqrt(word_frequency / sampling_factor) /
    (word_frequency / sampling_factor)))

我们假设频率词遵循Zipf定律(s = 1)来推导频率的数值近似(秩):

frequency(rank) ~ 1/(rank * (log(rank) + gamma) + 1/2 - 1/(12*rank))其中gamma是Euler-Mascheroni常数.

Arguments

  • size :Int,可能要采样的单词数.
  • sample_factor :word2vec公式中的采样因子.

Returns

长度size一维Numpy数组,其中第i个条目是应该对等级i进行采样的概率.