Что происходит, когда я передаю lstm как многомерный массив? - PullRequest
0 голосов
/ 04 мая 2018

Я создаю модель lstm из тензорного потока вот так

model.add(LSTM(6, input_shape=(1, 6), return_sequences=True))
model.add(LSTM(3))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='adam' )
model.fit(X_train_t, y_train, epochs=200, batch_size=3, verbose=1)

Значение X_train_t равно

[[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
 [ 0.          0.46412556  0.24775785  0.20179372  0.23430493  0.16704036]
 [ 0.15022422  0.          0.46412556  0.24775785  0.20179372  0.23430493]
 [ 0.2690583   0.15022422  0.          0.46412556  0.24775785  0.20179372]
 [ 0.2690583   0.2690583   0.15022422  0.          0.46412556  0.24775785]
 [ 0.24775785  0.2690583   0.2690583   0.15022422  0.          0.46412556]
 [ 0.21076233  0.24775785  0.2690583   0.2690583   0.15022422  0.        ]
...

Нет ошибок, но я не понимаю. Входные данные LSTM - это временные ряды и цикл в одном узле.

enter image description here

Почему нет ошибки при установке многомерного массива, я думаю, что правильный ввод должен быть таким. Как lstm получить вход?

[[ 0.24215247]
 [ 0.16704036]
 [ 0.23430493]
...

1 Ответ

0 голосов
/ 04 мая 2018

LSTM принимает в качестве входных векторов, а не чисел. Вы указали в качестве формы ввода:

input_shape=(1, 6)

Итак, 6-мерные векторы, это именно то, что вы вводите с каждым временным шагом:

[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]

Таким образом, входная последовательность с 3 временными шагами будет выглядеть следующим образом:

[[ 0.46412556  0.24775785  0.20179372  0.23430493  0.16704036  0.24215247]
 [ 0.          0.46412556  0.24775785  0.20179372  0.23430493  0.16704036]
 [ 0.15022422  0.          0.46412556  0.24775785  0.20179372  0.23430493]]

(3 вектора по 6 измерений)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...