Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在Bi LSTM层之前添加CNN层_Python 3.x_Keras_Nlp_Lstm_Faster Rcnn - Fatal编程技术网

Python 3.x 如何在Bi LSTM层之前添加CNN层

Python 3.x 如何在Bi LSTM层之前添加CNN层,python-3.x,keras,nlp,lstm,faster-rcnn,Python 3.x,Keras,Nlp,Lstm,Faster Rcnn,我想在情感分类任务的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_s

我想在情感分类任务的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
ValueError回溯(最近一次调用)
在()
6 model.add(Conv1D(32,内核大小=3,activation='relu'))
7 model.add(globalMapooling1d())
---->8模型。添加(展平())
9 model.add(双向(LSTM(32,返回序列=True)))
10 model.add(BatchNormalization())
2帧
/assert\u输入兼容性(self,inputs)中的usr/local/lib/python3.6/dist-packages/keras/engine/base\u layer.py
356 self.name+':应为最小值+
357 str(spec.min_ndim)+',发现ndim='+
-->358 str(K.ndim(x)))
359#检查数据类型。
360如果spec.dtype不是无:
ValueError:输入0与图层展平3不兼容:预期最小值ndim=3,发现ndim=2

这就是我建议您。。。删除展平和全局池,以保持三维格式的嵌入,并适当地适合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()

这就是我建议你的。。。删除展平和全局池,以保持三维格式的嵌入,并适当地适合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()