ฉันมีปัญหาง่าย ๆ แต่ฉันไม่สามารถหาเครื่องมือที่เหมาะสมในการแก้ปัญหาได้
ฉันมีลำดับเวกเตอร์บางส่วนที่มีความยาวเท่ากัน ตอนนี้ฉันต้องการในการฝึกอบรม LSTM RNN ตัวอย่างรถไฟของลำดับเหล่านี้แล้วทำให้มันจะทำนายลำดับใหม่ของเวกเตอร์ของความยาวขึ้นอยู่กับหลายรองพื้นเวกเตอร์
ฉันไม่พบการใช้งานที่ง่ายซึ่งจะทำเช่นนี้ ภาษาพื้นฐานของฉันคือ Python แต่สิ่งใดก็ตามที่ไม่ได้ติดตั้งไว้นานจะเก็บไว้
ผมพยายามที่จะใช้ลาซานญ่าแต่การดำเนินงานของ RNN ยังไม่พร้อมและจะอยู่ในแพคเกจแยกnntools อย่างไรก็ตามฉันลองอันหลัง แต่ไม่สามารถหาวิธีฝึกได้แล้วนำไปทดสอบโดยเวกเตอร์ทดสอบและปล่อยให้มันทำนายใหม่ บล็อกเป็นปัญหาเดียวกัน - ไม่มีเอกสารประกอบสำหรับ LSTM RNN แม้ว่าจะดูเหมือนว่ามีบางคลาสและฟังก์ชันที่สามารถใช้งานได้ (เช่นblocks.bricks.recurrent
)
มีการใช้งาน RNN LSTM หลายอย่างใน Theano เช่น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
ในขณะที่X_train
และy_train
เป็นอาร์เรย์ของอาร์เรย์ (ความยาว 12) เช่น[[i for i in range(12)] for j in range(1000)]