我正在嘗試使用 bi-lstm 對文本進行分類,但是當我在新資料集上運行 model.predict 時,它給了我這個錯誤:“bidirectional_2”層的輸入 0 與該層不兼容:預期 ndim=3,發現 ndim=2。收到的完整形狀:(無,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)
uj5u.com熱心網友回復:
嘗試這樣的事情(在TF 2.0和上測驗TF 2.8):
import tensorflow as tf
vocab_size = 50
embedding_size = 100
model = tf.keras.Sequential()
model.add(tf.keras.layers.Embedding(vocab_size, embedding_size, input_length=2))
model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(50, return_sequences=True, dropout=0.1, recurrent_dropout=0.1)))
model.add(tf.keras.layers.Bidirectional(tf.keras.layers.LSTM(30,return_sequences=True)))
model.add(tf.keras.layers.GlobalMaxPool1D())
model.add(tf.keras.layers.Dense(50, activation="relu"))
model.add(tf.keras.layers.Dropout(0.1))
model.add(tf.keras.layers.Dense(1, activation="sigmoid"))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model.summary())
X_train = tf.random.uniform((39780, 2), maxval=vocab_size, dtype=tf.int32)
Y_train = tf.random.uniform((39780, 1), maxval=2, dtype=tf.int32)
X_test = tf.random.uniform((28619, 2), maxval=vocab_size, dtype=tf.int32)
history=model.fit(X_train, Y_train, batch_size=64, epochs=1)
y_pred = model.predict([X_test], batch_size=26, verbose=1)
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_2 (Embedding) (None, 2, 100) 5000
bidirectional_2 (Bidirectio (None, 2, 100) 60400
nal)
bidirectional_3 (Bidirectio (None, 2, 60) 31440
nal)
global_max_pooling1d_1 (Glo (None, 60) 0
balMaxPooling1D)
dense_2 (Dense) (None, 50) 3050
dropout_1 (Dropout) (None, 50) 0
dense_3 (Dense) (None, 1) 51
=================================================================
Total params: 99,941
Trainable params: 99,941
Non-trainable params: 0
_________________________________________________________________
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/456243.html
