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)
Служебный класс для генерации батчей временных данных.
Этот класс принимает последовательность точечных данных, собранных с равными интервалами, наряду с такими параметрами временных рядов, как шаг, длина истории и т.д., для создания пакетов обучения/проверки.
Аргументы
- data: Индексируемый генератор (например, массив List или Numpy), содержащий последовательные точки данных (временные интервалы). Данные должны иметь размерность 2D, а ось 0 должна быть измерением времени.
- targets: Целевые значения, соответствующие временному интервалу в данных. Они должны иметь ту же длину, что и данные.
- length: Длина выходных последовательностей (по количеству временных интервалов).
- sampling_rate: Период между последовательными отдельными временными шагами внутри последовательностей. Для скорости r, временной шаг data[i], data[i-r], … data[i — длина] используется для создания последовательности дискретизации.
- stride: Период между последовательными выходными последовательностями. Для шага s последовательные выходные выборки будут центрироваться вокруг данных[i], данных[i+s], данных[i+2*s] и др.
- start_index: Точки данных предшествующие start_index, не будут использоваться в выходных последовательностях. Это полезно для резервирования части данных для тестирования или валидации.
- end_index: Точки данных, расположенные позже, чем end_index, не будут использоваться в выходных последовательностях. Это полезно для резервирования части данных для тестирования или проверки.
- shuffle: Следует ли тасовать выходные выборки, или вместо этого располагать их в хронологическом порядке.
- reverse: Boolean: если верно, то таймфреймы в каждой выходной выборке будут в обратном хронологическом порядке.
- batch_size: Количество сэмплов таймсерий в каждой партии (за исключением, возможно, последней).
Возвращает
Экземпляр последовательности Sequence
Примеры
from keras.preprocessing.sequence import TimeseriesGeneratorimport 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_timesteps является либо аргументом maxlen, если он задан, либо длиной самой большой последовательности.
Последовательности, которые короче, чем num_timesteps, добавляются значениями в конце.
Последовательности длиннее num_timesteps усекаются таким образом, чтобы соответствовать желаемой длине. Позиция, в которой происходит дополнение или усечение, определяется аргументами padding и truncating соответственно.
По умолчанию используется предварительный пэддинг (препэддинг).
Аргументы
- sequences: Список списков, где каждый элемент является последовательностью.
- maxlen: Int, максимальная длина всех последовательностей.
- dtype: Тип выходных последовательностей. Для подстановки последовательностей со строками переменной длины можно использовать object.
- padding: String, ‘pre’ или ‘post’: применять пэд либо до, либо после последовательности.
- truncating: String, ‘pre’ или ‘post’: удалять значения из последовательностей, превышающие maxlen, как в начале, так и в конце последовательностей.
- value: Float или String, значение пэддинга.
Возвращает
- x: Numpy массив с формой (len(sequences), maxlen)
Вызывает исключения
- ValueError: В случае недействительных значений для усечения или пэддинга, или в случае недействительной формы для записи последовательности.
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.
Эта функция преобразует последовательность индексов слов (список целых чисел) в кортежи слов формы:
(слово, слово в том же окне), с меткой 1 (положительные примеры).
(слово, случайное слово из словаря), с меткой 0 (отрицательные выборки).
Подробнее о скипграммах читайте в статье Миколова и соавт..: ”Эффективная оценка представления слова в векторном пространстве”. http://arxiv.org/pdf/1301.3781v3.pdf
Аргументы
- sequence: Последовательность слов (предложение), закодированная как список индексов слов (целых чисел). При использовании sampling_table индексы слов, как ожидается, будут соответствовать рангу слов в датасете (например, 10 будет кодировать 10-й наиболее часто встречающийся токен). Обратите внимание, что индекс 0, как ожидается, будет не словом и будет пропущен.
- vocabulary_size: Int, максимально возможное количество индексов слов + 1
- window_size: Int, размер окна выборки (технически полуокна). Окно слова w_i будет [i — window_size, i + window_size+1].
- negative_samples: Float >= 0. 0 для отрицательной выборки (то есть случайных) значений. 1 для положительных примеров.
- shuffle: Следует ли перетасовать «пары» перед их возвращением.
- categorical: boolean. Eсли False, метки будут целыми (например, [0, 1, 1 … ]), если True, метки будут категориальными, например, [[1,0],[0,1],[0,1] … ].
- sampling_table: 1D массив размера vocabulary_size, в котором запись i кодирует вероятность выборки слова ранга i.
- seed: Число запускающее генератор случайных чисел.
Возвращает
пары, метки: где пары — это int-пары, а метки- 0 или 1.
Примечание
По условию, индекс 0 в словаре не является словом и будет пропущен.
make_sampling_table
keras.preprocessing.sequence.make_sampling_table(size, sampling_factor=1e-05)
Создает таблицу вероятностных выборок, основанную на ранге слова.
Используется для генерации аргумента sampling_table для skipgrams. sampling_table[i] — это вероятность выборки наиболее распространенного слова в наборе данных (более распространенные слова должны выбираться реже, для баланса).
Вероятности выборки генерируются в соответствии с распределением выборки, используемым в word2vec:
p(word) = (min(1, sqrt(word_frequency / sampling_factor) /
(word_frequency / sampling_factor)))
Мы предполагаем, что частоты слов следуют закону Ципфа (s=1) для получения численного приближения частоты (ранга):
frequency(rank) ~ 1/(rank * (log(rank) + gamma) + 1/2 — 1/(12*rank)) где gamma это константа Эйлера-Маскерони.
Аргументы
- size: Int, количество возможных слов для выборки.
- sample_factor: Коэффициент выборки в формуле word2vec.
Возвращает
Массив длиной 1D Numpy, в котором запись ith — это вероятность того, что будет взято слово ранга i.