- Преобразование ряда данных в [выборки, временные шаги, функции] и
- LSTM с отслеживанием состояния
Код: Выделить всё
# reshape into X=t and Y=t+1
look_back = 3
trainX, trainY = create_dataset(train, look_back)
testX, testY = create_dataset(test, look_back)
# reshape input to be [samples, time steps, features]
trainX = numpy.reshape(trainX, (trainX.shape[0], look_back, 1))
testX = numpy.reshape(testX, (testX.shape[0], look_back, 1))
########################
# The IMPORTANT BIT
##########################
# create and fit the LSTM network
batch_size = 1
model = Sequential()
model.add(LSTM(4, batch_input_shape=(batch_size, look_back, 1), stateful=True))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam')
for i in range(100):
model.fit(trainX, trainY, nb_epoch=1, batch_size=batch_size, verbose=2, shuffle=False)
model.reset_states()
Как видно, TrainX представляет собой трехмерный массив, в котором Time_steps и Feature являются последними двумя измерениями соответственно (3 и 1 в этом конкретном коде). Глядя на изображение ниже, означает ли это, что мы рассматриваем случай «многие к одному», где количество розовых прямоугольников равно 3? Или это означает, что длина цепочки равна 3 (?.

Стает ли аргумент особенностей актуальным, когда мы рассматриваем многомерные ряды, например, одновременное моделирование двух финансовых акций?
LSTM с отслеживанием состояния
Означают ли LSTM с отслеживанием состояния? мы сохраняем значения памяти ячеек между запусками пакетов? Если это так, пакет_size равен единице, и память сбрасывается между запусками обучения, так какой смысл говорить, что это было с отслеживанием состояния, я думаю? это связано с тем, что данные обучения не перемешиваются, но я не знаю, как это сделать.
Есть мысли?
Ссылка на изображение: http://karpathy.github.io/2015/05/21/rnn-efficientness/
Редактировать 1:
Немного запутался в @ комментарий Вана о равенстве красных и зеленых полей. Соответствуют ли следующие вызовы API развернутым диаграммам? Особенно обращая внимание на вторую диаграмму (?
Код: Выделить всё
batch_size

Изменить 2:
Для людей, которые прошли курс глубокого обучения Udacity и не понимают аргумента time_step, посмотрите следующее обсуждение: https://discussions.udacity.com/t/rnn-l ... ion/163169
Обновление:
Оказывается, model.add(TimeDistributed(Dense(vocab_len))) — это то, что я искал. Вот пример: https://github.com/sachinruk/ShakespeareBot
Update2:
Здесь я суммировал большую часть своего понимания LSTM. :
Подробнее здесь: https://stackoverflow.com/questions/387 ... ries-lstms
Мобильная версия