Сохраняется ли состояние между образцами для одной партии в LSTM с сохранением состояния в Керасе? - PullRequest
0 голосов
/ 30 января 2019

Предположим, я хочу классифицировать временные ряды, каждый из которых имеет 33 временных шага.Я разделил их на более мелкие куски.Допустим, у меня есть следующий Input X_1, размерность (32,3,1), поэтому 32 сэмпла, 3 временных шага, 1 особенность:

[
    [[1],  [2],  [3]]  # step 1 to step 3 from time series 1
    [[11], [14], [17]] # step 1 to step 3 from time series 2
    [[3],  [5],  [7]]  # step 1 to step 3 from time series 3
    ...
    [[9],  [7],  [2]]  # step 1 to step 3 from time series 32
]

и Y = [A, A, B, …, B], содержащие метки для каждого из них.32 временных ряда в этом пакете.

Теперь я запускаю model.fit(X_1, Y).

Затем я беру следующие 3 временных шага для каждого временного ряда как X_2:

[
    [[4],  [5],  [6]]  # step 4 to step 6 from time series 1
    [[20], [23], [26]] # step 4 to step 6 from time series 2
    [[9],  [11], [13]] # step 4 to step 6 from time series 3
    ...
    [[8],  [1],  [9]]  # step 4 to step 6 from time series 32
]

и снова то же самое Y = [A, A, B, …, B].

Поскольку я разделил временной ряд, я использую модель с состоянием, так что состояние из X_1 сохраняется для X_2.

Снова бегу model.fit(X_2, Y).Я повторяю это до тех пор, пока не достигну X_11 с шагом от 31 до 33 из моих входных данных.После того, как я позвонил model.fit(X_11, y), я позвоню model.reset_states(), потому что я закончил с первой партией из 32 временных рядов, и я могу начать сначала с новой партией из 32 временных рядов.

По крайней мере, до сих пор я думал, что это способ сделать это.Но теперь я прочитал, что это состояние сохраняется по умолчанию для выборок в пакете, что также означает, что состояние из первых 3 шагов временного ряда 1 в X_0 также используется для первых 3 шагов из временного ряда 2?Потому что это не имеет смысла, у них нет ничего общего, государство не должно делиться между ними.Так что же правильно?

1 Ответ

0 голосов
/ 30 января 2019

Нет, состояния - это матрицы, одним из измерений которых является размер пакета, то есть для каждой выборки существует одна строка состояний.

Серия 1 не связывается с серией 2.

...