Python 如何确定Keras LSTM输入/输出尺寸?
我的模型是:Python 如何确定Keras LSTM输入/输出尺寸?,python,keras,lstm,Python,Keras,Lstm,我的模型是: 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')) pr
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的例子。这解释得很好。那是因为你的训练数据的y值的形状不对,我想我确实想预测4945个班,对吗?因为我有多少代币?可能吧,但我们不知道你的数据是什么样子的。4945节课太多了。