我有一个非常简单的问题,但找不到合适的工具来解决。
我有一些长度相同的向量序列。现在,我想在这些序列的训练样本上训练LSTM RNN,然后使其基于几个启动向量来预测长度为的向量的新序列。
我找不到能做到这一点的简单实现。我的基本语言是Python,但是任何几天都不会安装的东西都可以使用。
我尝试使用Lasagne,但是RNN的实现尚未准备好,并且在nntools单独的软件包中。无论如何,我尝试了后者,但是我不知道如何训练它,然后通过一些测试向量对其进行填充,并让它预测新的。块是同样的问题-尽管似乎有些类和函数可以工作(例如blocks.bricks.recurrent
),但是LSTM RNN没有可用的文档。
有在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
while X_train
和y_train
是数组的数组(长度为12),例如[[i for i in range(12)] for j in range(1000)]