Я довольно новичок в Neural Networks и Keras Library, и мне интересно, как я могу использовать уровень вложения, как описано here, чтобы скрыть мои входные данные от 2D-тензора до 3D-тензора для RNN.Как использовать слой вставки для повторяющейся нейронной сети (RNN) в Keras
Say данные мои TimeSeries глядя следующим образом (с увеличением времени):
X_train = [
[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
...
] # with a length of 1000
Теперь, скажем, я хотел бы дать РНН 2 последних векторов признаков для прогнозирования вектора признаков для времени т +1.
В настоящее время (без слоя встраивания) я создаю необходимый трехмерный тензор с формой (nb_samples, timesteps, input_dim) сам (как в этом примере here).
, относящийся к моему примеру, окончательный 3D Tensor будет выглядеть следующим образом:
X_train_2 = [
[[1.0,2.0,3.0,4.0],
[2.0,5.0,6.0,7.0]],
[[2.0,5.0,6.0,7.0],
[3.0,8.0,9.0,10.0]],
[[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0]],
etc...
]
и Y_train:
Y_train = [
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
etc...
]
Моя модель выглядит следующим образом (адаптировано к упрощенному примеру выше):
num_of_vectors = 2
vect_dimension = 4
model = Sequential()
model.add(SimpleRNN(hidden_neurons, return_sequences=False, input_shape=(num_of_vectors, vect_dimension)))
model.add(Dense(vect_dimension))
model.add(Activation("linear"))
model.compile(loss="mean_squared_error", optimizer="rmsprop")
model.fit(X_train, Y_train, batch_size=50, nb_epoch=10, validation_split=0.15)
И, наконец, мой вопрос: как я могу избежать выполнения этих 2D-тензоров до 3D тензор меняет форму и вместо этого использует слой Embedding? Я думаю, после того, как модель = последовательного() я бы добавить что-то вроде:
model.add(Embedding(?????))
Вероятно, ответ довольно прост, я просто смущен документации вложения слоя.
Возможно, я должен был добавить «.0» за всеми моими номерами. На самом деле я не пытаюсь выполнить категориальный анализ. – Kito