मैं एक अनुक्रम में अगले तत्व की भविष्यवाणी करने के लिए केरास का उपयोग कर एलएसटीएम के साथ कुछ वेनिला पैटर्न मान्यता करने की कोशिश कर रहा हूं।मैं केरास में एक चर-लंबाई इनपुट एलएसटीएम कैसे बना सकता हूं?
मेरे डेटा कुछ ऐसा दिखाई:
जहां प्रशिक्षण अनुक्रम का लेबल सूची में अंतिम तत्व है: X_train['Sequence'][n][-1]
।
क्योंकि मेरे Sequence
कॉलम में अनुक्रम में तत्वों की एक चर संख्या हो सकती है, मेरा मानना है कि एक आरएनएन उपयोग करने का सबसे अच्छा मॉडल है।
# Build the model
# A few arbitrary constants...
max_features = 20000
out_size = 128
# The max length should be the length of the longest sequence (minus one to account for the label)
max_length = X_train['Sequence'].apply(len).max() - 1
# Normal LSTM model construction with sigmoid activation
model = Sequential()
model.add(Embedding(max_features, out_size, input_length=max_length, dropout=0.2))
model.add(LSTM(128, dropout_W=0.2, dropout_U=0.2))
model.add(Dense(1))
model.add(Activation('sigmoid'))
# try using different optimizers and different optimizer configs
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
यहाँ और कैसे मैं अपने मॉडल को प्रशिक्षित करने का प्रयास है:: नीचे मेरी Keras में एक LSTM का निर्माण करने का प्रयास है
# Train the model
for seq in X_train['Sequence']:
print("Length of training is {0}".format(len(seq[:-1])))
print("Training set is {0}".format(seq[:-1]))
model.fit(np.array([seq[:-1]]), [seq[-1]])
मेरे उत्पादन यह है:
Length of training is 13
Training set is [1, 3, 13, 87, 1053, 28576, 2141733, 508147108, 402135275365, 1073376057490373, 9700385489355970183, 298434346895322960005291, 31479360095907908092817694945]
हालांकि, मैं निम्न त्रुटि प्राप्त करें:
Exception: Error when checking model input: expected embedding_input_1 to have shape (None, 347) but got array with shape (1, 13)
I मेरा मानना है कि मेरा प्रशिक्षण कदम सही ढंग से सेटअप है, इसलिए मेरा मॉडल निर्माण गलत होना चाहिए। ध्यान दें कि 347 max_length
है।
मैं केरास में एक चर-लंबाई इनपुट एलएसटीएम का सही ढंग से निर्माण कैसे कर सकता हूं? मैं डेटा पैड नहीं करना पसंद करूंगा। सुनिश्चित नहीं है कि यह प्रासंगिक है, लेकिन मैं Theano बैकएंड का उपयोग कर रहा हूँ।
मैं इनपुट_शिप निर्दिष्ट करके और मनमाने ढंग से लंबाई के लिए कोई भी उपयोग करके यह काम करने में कामयाब रहा। – Benjamin
शायद मेरा खुद का प्रश्न आपके लिए उपयोग किया जा सकता है: http://stackoverflow.com/questions/38265922/recurrent-convolutional-blstm-neural-network-arbitrary-sequence-lengths – Benjamin