Jestem raczej nowy w sieciach neuronowych i bibliotece Keras i zastanawiam się, w jaki sposób mogę użyć opcji Osadzania warstwy zgodnie z opisem here, aby zamaskować dane wejściowe od tensora 2D do tensora 3D dla RNN.Jak korzystać z warstwy osadzającej dla powtarzalnej sieci neuronowej (RNN) w Kouse
Say dane moi timeseries patrząc następująco (z czasem rosnącej):
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
Teraz, powiedzmy chciałbym dać RNN ostatnie 2 wektory właściwości w celu przewidywania wektor cech dla czasu t +1.
Obecnie (bez warstwy osadzania) sam tworzę wymagany tensor 3D z kształtem (nb_samples, timesteps, input_dim) (jak w tym przykładzie here).
Podobne do mojego przykładu, końcowy 3D Tensor będzie wtedy wyglądać następująco:
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...
]
i Y_train:
Y_train = [
[3.0,8.0,9.0,10.0],
[4.0,11.0,12.0,13.0],
etc...
]
Mój model wygląda następująco (dostosowany do uproszczonym przykładzie powyżej):
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)
I na koniec moje pytanie brzmiałoby: jak można uniknąć wykonywania tych tensorów 2D Tensor 3D przekształca się i używa zamiast tego warstwy Osadzanie? Chyba po Model = sekwencyjnego() to muszę dodać coś takiego:
model.add(Embedding(?????))
Prawdopodobnie odpowiedź jest dość prosta, ja po prostu zdezorientowany dokumentacji warstwy osadzania.
Może powinienem dodać ".0" za wszystkimi moimi numerami. Właściwie to nie próbuję przeprowadzić kategorycznej analizy. – Kito