Остаточные слои LSTM
У меня проблемы с пониманием тензорного поведения в слоях LSTM в кератах.
Я предварительно обработал числовые данные, которые выглядят как [образцы, временные шаги, особенности]. Итак, 10 000 выборок, 24 временных шага и 10 предикторов.
Я хочу составить остаточные соединения, но я не уверен, что делаю это правильно:
x <- layer_input(shape = c(24,10))
x <- layer_lstm(x,units=32,activation="tanh",return_sequences=T)
Теперь форма х, которая является тензорной, равна [?,?,32]. Я ожидал [?,32,10]. Должен ли я изменить форму данных, чтобы они были [образцы, особенности, временные шаги]? Затем я формирую Res:
y <- layer_lstm(x,units=32,activation="tanh",return_sequences=T)
res <- layer_add(c(x, y))
Теперь я не уверен, если это правильно, или, может быть, я должен пойти с этим вместо
x <- layer_input(shape = c(24,10))
y <- layer_lstm(x,units=24,activation="tanh",return_sequences=T) # same as time_steps
res <- layer_add(c(x,y)) ## perhaps here data reshaping is neccesary?
Любое понимание очень ценится.
JJ
1 ответ
LSTM
слой вернет вам тусклые как (?,seq_length,out_dims)
, где out_dims
является units
в твоем случае. Таким образом, общая яркость будет как
x <- layer_input(shape = c(24,10))
# dims of x (?,24,10)
x <- layer_lstm(x,units=32,activation="tanh",return_sequences=T)
# dims of x after lstm_layer (?,24,32)
y <- layer_lstm(x,units=32,activation="tanh",return_sequences=T)
# dims of y (?,24,32)
res <- layer_add(c(x, y))
# dims of res will be (?,24,32), it is addion of output of both lstm_layer.
Для получения дополнительной информации, вы можете проверить это