簡體   English   中英

LSTM Keras功能API層輸入形狀錯誤

[英]LSTM Keras functional API layer input shape error

我正在嘗試使用多個輸入-輸出模型(使用預訓練的詞嵌入作為嵌入層)來構建Keras功能API LSTM層。

下面是我的代碼:

#sequential padding text data
max_review_length = 300
text_seq_train = sequence.pad_sequences(text_train, maxlen=max_review_length)
text_seq_test = sequence.pad_sequences(text_test, maxlen=max_review_length)

print(text_seq_train.shape)
print(text_seq_test.shape)

# Loading pre-trained glove embedding file
embeddings_index = dict()
f = open('gdrive/My Drive/glove.6B.100d.txt')
for line in f:
    values = line.split()
    word = values[0]
    coefs = np.asarray(values[1:], dtype='float32')
    embeddings_index[word] = coefs
f.close()
print('Loaded %s word vectors.' % len(embeddings_index))

embedding_matrix = zeros((len(text_tokenizer.index_word), 100))
for word, i in text_tokenizer.index_word.items():
    embedding_vector = embeddings_index.get(word)
    if embedding_vector is not None:
        embedding_matrix[i] = embedding_vector

print(embedding_matrix.shape)   #weights for embedding layer

輸出:

(76473, 300)
(32775, 300)
Loaded 400000 word vectors.
(55297, 100)

LSTM部分

input_layer = Input(shape=(300,))
embed = Embedding(input_dim = len(text_tokenizer.index_word) , output_dim = 100, input_length = len(text_seq_train[0]) ,weights=[embedding_matrix], trainable=False) (input_layer)
lstm = LSTM(100)(embed)
flat = Flatten() (lstm)

收到錯誤聲明:


ValueError                                Traceback (most recent call last)
<ipython-input-131-9118c8229a4a> in <module>()
      2 embed = Embedding(input_dim = len(text_tokenizer.index_word) , output_dim = 100, input_length = len(text_seq_train[0]) ,weights=[embedding_matrix], trainable=False) (input_layer)
      3 lstm = LSTM(100)(embed)
----> 4 flat = Flatten() (lstm)

1 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/base_layer.py in assert_input_compatibility(self, inputs)
    325                                      self.name + ': expected min_ndim=' +
    326                                      str(spec.min_ndim) + ', found ndim=' +
--> 327                                      str(K.ndim(x)))
    328             # Check dtype.
    329             if spec.dtype is not None:

ValueError: Input 0 is incompatible with layer flatten_26: expected min_ndim=3, found ndim=2

我不知道我在想什么,哪里出了問題。 任何幫助,將不勝感激,謝謝。

您不必展平LSTM輸出。 LSTM輸出具有形狀(batch_size,單位)的張量。

參見: https : //keras.io/layers/recurrent/

賈瓦爾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM