Yani:
Bire bir : Dense
dizileri işlemediğiniz için bir katman kullanabilirsiniz :
model.add(Dense(output_size, input_shape=input_shape))
Birden çoğa : bu seçenek desteklenmediği için, zincirleme modelleri çok kolay değildir Keras
, bu nedenle aşağıdaki sürüm en kolay olanıdır:
model.add(RepeatVector(number_of_times, input_shape=input_shape))
model.add(LSTM(output_size, return_sequences=True))
Çoktan bire : aslında, kod pasajınız (neredeyse) bu yaklaşımın bir örneğidir:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim)))
Birçok çoğa : Bu giriş ve çıkış uzunluğu tekrarlayan adım sayısını maçları kolay snippet'idir:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
Adım sayısı giriş / çıkış uzunluğundan farklı olduğunda çoktan çoğa: Bu Keras'ta acayip zordur. Bunu kodlamak için kolay kod parçacıkları yoktur.
DÜZENLE: Reklam 5
Benim son uygulamalardan birinde, biz benzer olabilecek bir şey uygulanan birçok çoğa 4 görüntüden. Aşağıdaki mimariye sahip bir ağa sahip olmak istemeniz durumunda (bir giriş, çıkıştan daha uzun olduğunda):
O O O
| | |
O O O O O O
| | | | | |
O O O O O O
Bunu şu şekilde başarabilirsiniz:
model = Sequential()
model.add(LSTM(1, input_shape=(timesteps, data_dim), return_sequences=True))
model.add(Lambda(lambda x: x[:, -N:, :]
Kaplamak N
istediğiniz son adımların sayısı nerede (resimde N = 3
).
Bu noktadan itibaren:
O O O
| | |
O O O O O O
| | |
O O O
uygun bir boyuta ayarlamak için, N
örneğin 0
vektörlerle birlikte kullanılan uzunlukta yapay dolgu dizisi kadar basittir .