Python 3.x 如何解决“登录和标签必须具有相同的第一维度”错误

Python 3.x 如何解决“登录和标签必须具有相同的第一维度”错误,python-3.x,tensorflow,machine-learning,keras,nlp,Python 3.x,Tensorflow,Machine Learning,Keras,Nlp,我正在为基于单词的NLP尝试不同的神经网络结构 到目前为止,在本教程的指导下,我使用了双向、嵌入式和GRU模型:并且一切都很好。 然而,当我尝试使用LSTM时,我得到一个错误,即: logits和标签必须具有相同的第一个维度,即got logits形状[32186]和标签形状[4704] 我怎样才能解决这个问题 我的源和目标数据集由7200个示例句子组成。它们是整数标记化和嵌入的。源数据集经过后期填充以匹配目标数据集的长度 以下是我的模型和相关代码: lstm_模型=顺序 lstm_model.

我正在为基于单词的NLP尝试不同的神经网络结构

到目前为止,在本教程的指导下,我使用了双向、嵌入式和GRU模型:并且一切都很好。 然而,当我尝试使用LSTM时,我得到一个错误,即:

logits和标签必须具有相同的第一个维度,即got logits形状[32186]和标签形状[4704]

我怎样才能解决这个问题

我的源和目标数据集由7200个示例句子组成。它们是整数标记化和嵌入的。源数据集经过后期填充以匹配目标数据集的长度

以下是我的模型和相关代码:

lstm_模型=顺序 lstm_model.addEmbeddingsrc_vocab_size,128,输入长度=X.shape[1],输入形状=X.shape[1:] lstm_model.addLSTM128,返回_序列=False,辍学=0.1,重复性_辍学=0.1 lstm_model.addDense128,activation='relu' lstm_模型。添加辍学0.5 lstm_model.addDensetarget_vocab_size,activation='softmax' lstm\u model.compileoptimizer=Adam0.002,loss='sparse\u categorical\u crossentropy',metrics=['accurity'] history=lstm\u model.fitX,Y,batch\u size=32,callbacks=CALLBACK,epochs=100,validation\u split=0.25在此行引发错误! 使用以下形状:

X.shape=7200147 Y形=7200147,1 src_vocab_size=188 目标声音大小=186 我已经在这里看到了类似的问题,并尝试添加一个重塑层

simple_lstm_model.addReformate-1, 但这只会导致以下错误:

TypeError:_uuint_uu返回非int类型NoneType

这真的很奇怪,因为我对所有模型都以相同的方式预处理数据集,除了上面提到的以外,它工作得很好。

在调用LSTM构造函数时,应该有return\u sequences=True和return\u state=False

在代码段中,LSTM只返回其最后一个状态,而不是每个输入嵌入的状态序列。理论上,您可以从错误消息中发现它:

logits和标签必须具有相同的第一个维度,即got logits形状[32186]和标签形状[4704]

logit应该是三维的:批量大小×序列长度×类数。序列的长度是147,实际上是32×147=4704个标签。这本可以告诉你序列的长度消失了