【问题标题】:How do I add a CNN layer before Bi-LSTM layer如何在 Bi-LSTM 层之前添加 CNN 层
【发布时间】:2020-10-28 23:07:41
【问题描述】:

我想在用于情绪分类任务的 Bi-LSTM 层之前添加一个具有最大池化的 CNN 层,但我遇到了一个错误。

这是我正在使用的代码。

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

【问题讨论】:

    标签: python-3.x keras nlp lstm faster-rcnn


    【解决方案1】:

    这就是我建议您...删除扁平化和全局池化以保持 3d 格式的嵌入并正确适应 LSTM。我还将返回序列设置为 False,因为您是情绪分类器,并假设您的输出是 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-14
      • 2017-09-23
      • 2021-03-20
      • 2020-11-06
      • 2017-07-31
      • 1970-01-01
      • 2023-01-31
      • 1970-01-01
      相关资源
      最近更新 更多