我有一个非常简单的问题,但我找不到合适的工具来解决它。
我有一些相同长度的向量序列。现在我想在这些序列的训练样本上训练 LSTM RNN,然后让它预测新的长度向量序列基于几个启动向量。
我找不到可以做到这一点的简单实现。我的基础语言是 Python,但任何几天都没有安装的东西都可以使用。
我尝试使用Lasagne,但 RNN 的实现还没有准备好,它在单独的包nntools中。无论如何,我尝试了后一种,但我不知道如何训练它,然后通过一些测试向量启动它并让它预测新的。块是同样的问题——LSTM RNN 没有可用的文档,尽管似乎有一些类和函数可以工作(例如blocks.bricks.recurrent
)。
Theano 中有几种 RNN LSTM 的实现,比如,GroundHog
和一些论文的代码,但没有一个有教程或指导如何做我想做的事。theano-rnn
theano_lstm
我发现唯一可用的解决方案是使用 Pybrain。但不幸的是,它缺乏 Theano 的特性(主要是 GPU 计算)并且是孤立的(没有新特性和支持)。
有谁知道我在哪里可以找到我要的东西?易于使用 RNN LSTM 预测向量序列?
编辑:
我像这样尝试过 Keras:
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')
但是我在尝试适应它时遇到了这个错误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
whileX_train
和y_train
是数组的数组(长度为 12),例如[[i for i in range(12)] for j in range(1000)]