Tôi có vấn đề rất đơn giản nhưng tôi không thể tìm thấy một công cụ phù hợp để giải quyết nó.
Tôi có một số chuỗi các vectơ có cùng độ dài. Bây giờ tôi muốn huấn luyện LSTM RNN trên mẫu đào tạo các chuỗi này và sau đó thực hiện để dự đoán chuỗi vectơ mới có độ dài dựa trên một số vectơ mồi .
Tôi không thể tìm thấy thực hiện đơn giản mà sẽ làm điều này. Ngôn ngữ cơ bản của tôi là Python, nhưng bất cứ thứ gì không cài đặt trong nhiều ngày sẽ giữ được.
Tôi đã thử sử dụng Lasagne , nhưng việc triển khai RNN vẫn chưa sẵn sàng và đó là trong các gói nntools riêng biệt . Dù sao, tôi đã thử cái thứ hai nhưng tôi không thể tìm ra cách huấn luyện nó, sau đó chọn nó bằng một số vectơ kiểm tra và để nó dự đoán người mới. Các khối là cùng một vấn đề - không có tài liệu nào có sẵn cho LSTM RNN, mặc dù có vẻ như có một số lớp và chức năng có thể hoạt động (ví dụ blocks.bricks.recurrent
).
Có một số thực hiện RNN LSTM trong Theano, như GroundHog
, theano-rnn
, theano_lstm
và mã cho một số giấy tờ, nhưng không những có hướng dẫn hoặc hướng dẫn làm thế nào để làm những gì tôi muốn.
Giải pháp có thể sử dụng duy nhất tôi tìm thấy là sử dụng Pybrain. Nhưng thật không may, nó thiếu các tính năng của Theano (chủ yếu là tính toán GPU) và mồ côi (không có tính năng và hỗ trợ mới).
Có ai biết nơi tôi có thể tìm thấy những gì tôi yêu cầu? Dễ dàng làm việc với RNN LSTM để dự đoán chuỗi các vectơ?
Chỉnh sửa:
Tôi đã thử Keras như thế này:
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')
nhưng tôi gặp lỗi này khi cố gắng điều chỉnh nó 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
trong khi X_train
và y_train
là mảng của mảng (có độ dài 12), vd[[i for i in range(12)] for j in range(1000)]