簡體   English   中英

如何確定Keras LSTM輸入/輸出尺寸?

[英]How to fix Keras LSTM input / output dimensions?

我的模型是:

model = Sequential()
model.add(Embedding(input_dim=vocab_size,
                    output_dim=1024, input_length=self.SEQ_LENGTH))

model.add(LSTM(vocab_size))

model.add(Dropout(rate=0.5))
model.add(Dense(vocab_size, activation='softmax'))
print(model.summary())

model.compile(loss='sparse_categorical_crossentropy',
              optimizer="adam", metrics=['accuracy'], callbacks=callbacks)

摘要是:

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
embedding_1 (Embedding)      (None, 100, 1024)         5064704   
_________________________________________________________________
lstm_1 (LSTM)                (None, 4946)              118130264 
_________________________________________________________________
dropout_1 (Dropout)          (None, 4946)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 4946)              24467862  
=================================================================
Total params: 147,662,830
Trainable params: 147,662,830
Non-trainable params: 0
_________________________________________________________________

但是當我運行它時,我得到一個錯誤:

ValueError: Error when checking target: expected dense_1 to have shape (1,) but got array with shape (4945,)

我需要更改什么才能使其更好地匹配?

我認為您的模型不是您想要的:

model.add(LSTM(vocab_size))

您不需要具有4946個神經元的LSTM層。

model.add(Dense(vocab_size, activation='softmax'))

而且我猜您不想預測4946個課程。

but got array with shape (4945,)

您的模型需要一個數據集,其中每一行都是單詞索引列表,最大索引為vocab_size。

我需要更改什么才能使其更好地匹配? 我認為您應該看看keras NLP示例。 這很好解釋。

暫無
暫無

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

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