मैं एक भावना वर्गीकरण कार्य के लिए एक द्वि-एलएसटीएम परत से पहले अधिकतम-पूलिंग के साथ एक सीएनएन परत जोड़ना चाहता हूं लेकिन मुझे एक त्रुटि मिल रही है।

यहां वह कोड है जिसका मैं उपयोग कर रहा हूं।

model = Sequential()
model.add(Embedding(max_words, 30, input_length=max_len))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Conv1D(32, kernel_size=3, activation='relu'))
model.add(GlobalMaxPooling1D())
model.add(Flatten())
model.add(Bidirectional(LSTM(32, return_sequences=True)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.8))
model.add(Dense(1, activation='sigmoid'))
model.summary()

यह त्रुटि है जो मुझे मिल रही है

ValueError                                Traceback (most recent call last)
<ipython-input-64-49cde447597a> in <module>()
      6 model.add(Conv1D(32, kernel_size=3, activation='relu'))
      7 model.add(GlobalMaxPooling1D())
----> 8 model.add(Flatten())
      9 model.add(Bidirectional(LSTM(32, return_sequences=True)))
     10 model.add(BatchNormalization())

2 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py in assert_input_compatibility(self, inputs)
    356                                      self.name + ': expected min_ndim=' +
    357                                      str(spec.min_ndim) + ', found ndim=' +
--> 358                                      str(K.ndim(x)))
    359             # Check dtype.
    360             if spec.dtype is not None:

ValueError: Input 0 is incompatible with layer flatten_3: expected min_ndim=3, found ndim=2
0
Amber Bhanarkar 8 जुलाई 2020, 16:56

1 उत्तर

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

मैं आपको यही सुझाव देता हूं... 3डी प्रारूप में एम्बेडिंग बनाए रखने और एलएसटीएम को ठीक से फिट करने के लिए समतल और वैश्विक पूलिंग को हटा दें। मैंने रिटर्न सीक्वेंस को गलत पर भी सेट किया है क्योंकि आपका एक सेंटीमेंट क्लासिफायर है और मान लीजिए कि आपका आउटपुट 2D है

max_words = 111
max_len = 50

model = Sequential()
model.add(Embedding(max_words, 30, input_length=max_len))
model.add(SpatialDropout1D(0.5))
model.add(Conv1D(32, kernel_size=3, activation='relu'))
model.add(Bidirectional(LSTM(32, return_sequences=False)))
model.add(BatchNormalization())
model.add(Activation('tanh'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))
model.summary()
2
Marco Cerliani 8 जुलाई 2020, 17:33