Çok basit bir sorunum var ama bunu çözmek için doğru bir araç bulamıyorum.
Aynı uzunlukta bazı vektörler dizilim var. Şimdi bu dizilerin tren örnek LSTM RYSA tren ve sonra uzunluğu vektörleri yeni dizisini tahmin yapmak isteyen birkaç göre hazırlama vektörleri.
Bunu yapacak basit bir uygulama bulamıyorum. Temel dilim Python, ancak günlerce yüklenmeyen her şey geçerli olacak.
Lasagne kullanmaya çalıştım , ancak RNN uygulaması henüz hazır değil ve ayrılmış pakette nntools . Her neyse, ikincisini denedim ama nasıl eğitileceğini anlayamıyorum, sonra bazı test vektörleriyle hazırlayın ve yenileri tahmin etmesine izin veremiyorum. Bloklar aynı sorundur - LSTM RNN için herhangi bir belge yoktur, ancak çalışabilecek bazı sınıflar ve işlevler var gibi görünmektedir (örn. blocks.bricks.recurrent
).
Orada Theano gibi içinde RYSA LSTM çeşitli uygulama vardır GroundHog
, theano-rnn
, theano_lstm
bazı gazeteler için ve kod, ama öğretici olanların olmayanlara veya istediğimi nasıl yol gösterir.
Bulduğum tek kullanışlı çözüm Pybrain kullanmaktı. Ancak ne yazık ki Theano'nun (çoğunlukla GPU hesaplaması) özelliklerinden yoksun ve yetim kaldı (yeni özellik ve destek yok).
İstediğimi nerede bulabileceğimi bilen var mı? Vektör dizilerini tahmin etmek için RNN LSTM ile çalışmak kolay mı?
Düzenle:
Keras'ı şu şekilde denedim:
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers.embeddings import Embedding
from keras.layers.recurrent import LSTM
model = Sequential()
model.add(Embedding(12, 256))
model.regularizers = []
model(LSTM(256, 128, activation='sigmoid',
inner_activation='hard_sigmoid'))
model.add(Dropout(0.5))
model.add(Dense(128, 12))
model.add(Activation('sigmoid'))
model.compile(loss='mean_squared_error', optimizer='rmsprop')
ama uydurmaya çalışırken bu hatayı alıyorum model.fit(X_train, y_train, batch_size=16, nb_epoch=10)
IndexError: index 800 is out of bounds for axis 1 with size 12
iken X_train
ve y_train
dizilerin dizisi (uzunluk 12), ör.[[i for i in range(12)] for j in range(1000)]