繁体   English   中英

层“bidirectional_2”的输入 0 与层不兼容:预期 ndim=3,发现 ndim=2

[英]Input 0 of layer "bidirectional_2" is incompatible with the layer: expected ndim=3, found ndim=2

我正在尝试使用 bi-lstm 对文本进行分类,但是当我在新数据集上运行 model.predict 时,它给了我这个错误:“bidirectional_2”层的输入 0 与该层不兼容:预期 ndim=3,发现 ndim=2。 收到的完整形状:(None, 100) 我的训练数据的形状是:(39780, 2) 我的测试数据的形状是:(28619, 2)

 model = Sequential() model.add(Embedding(len(word_index) + 1, embed_size, weights=[embedding_matrix])) model.add(Bidirectional(LSTM(50, return_sequences=True, dropout=0.1, recurrent_dropout=0.1))) model.add(Bidirectional(LSTM(30,return_sequences=True))) model.add(GlobalMaxPool1D()) model.add(Dense(50, activation="relu")) model.add(Dropout(0.1)) model.add(Dense(1, activation="sigmoid")) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) history=model.fit(X_train, Y_train, batch_size=64, epochs=5) y_pred = model.predict([X_test], batch_size=26, verbose=1)

你应该在双向层之后使用重塑层

这可能有效:

model = Sequential()
model.add(Embedding(len(word_index) + 1, embed_size, weights=[embedding_matrix]))
model.add(Bidirectional(LSTM(50, return_sequences=True, dropout=0.1, recurrent_dropout=0.1)))
model.add(Reshape((100, 1), input_shape = (100, )))
model.add(Bidirectional(LSTM(30,return_sequences=True)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM