प्रारंभ में मैंने दो छिपी हुई परतों के साथ एक LSTM का उपयोग किया, फिर यह देखने का निर्णय लिया कि क्या द्विदिश परत का उपयोग करने से कोई सुधार होगा। मैंने LSTM से द्विदिश LSTM में इनपुट के आकार में कोई बदलाव नहीं किया है। जब मैं LSTM संस्करण चलाता हूं तो यह ठीक चलता है लेकिन जब मैं द्विदिश संस्करण चलाता हूं तो मुझे 4 आयामों की अपेक्षा वाली दूसरी परत के बारे में एक त्रुटि मिलती है। मेरा सवाल यह है कि ऐसा क्यों हो रहा है और मैं क्या कर सकता हूं?

त्रुटि संदेश: ValueError: इनपुट 0 परत द्विदिश के साथ असंगत है: अपेक्षित ndim=3, ndim=2 पाया गया

प्रशिक्षण सेट का इनपुट आकार (284,1,3) है।

द्विदिश LSTM के लिए कोड:

model = Sequential()

model.add(Bidirectional(LSTM(units=steps,input_shape=(1,steps))))
model.add(Bidirectional(LSTM(steps),merge_mode= 'ave'))
model.add(LSTM(units=steps,return_sequences=True,activation='relu'))

model.compile(loss='mse', optimizer='sgd',metrics=[Gavg])

model.fit(X_train, y_train, batch_size=1, epochs= 200, validation_data=(X_test,y_test), verbose=1)
1
Niko Maršič 6 पद 2018, 16:17

1 उत्तर

सबसे बढ़िया उत्तर

चूंकि आप कई LSTM परतों को एक दूसरे के ऊपर ढेर कर रहे हैं, इसलिए आपको पहली दो परतों पर return_sequences=True का उपयोग करने की आवश्यकता है। अन्यथा, उनके आउटपुट का आकार (batch_size, n_units) होगा और इसलिए यह अनुक्रम नहीं होगा और निम्नलिखित LSTM परत द्वारा संसाधित नहीं किया जा सकता है।

2
today 6 पद 2018, 13:34