首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决“逻辑和标签必须具有相同的第一维”错误

如何解决“逻辑和标签必须具有相同的第一维”错误
EN

Stack Overflow用户
提问于 2019-10-24 14:06:29
回答 1查看 104关注 0票数 0

我正在为基于字的NLP尝试不同的神经网络架构。

到目前为止,我在本教程的指导下使用了双向的、嵌入式的、带有GRU的模型:https://towardsdatascience.com/language-translation-with-rnns-d84d43b40571和所有这些都很好。然而,当我尝试使用LSTM时,我发现一个错误:

逻辑和标签必须具有相同的一维,得到逻辑形状为32,186和标签形状为4704。

我怎么才能解决这个问题?

我的源和目标数据集由7200个例句组成。它们是整数标记和嵌入的。添加源数据集以匹配目标数据集的长度。

这是我的模型和相关代码:

代码语言:javascript
复制
lstm_model = Sequential()
lstm_model.add(Embedding(src_vocab_size, 128, input_length=X.shape[1], input_shape=X.shape[1:]))
lstm_model.add(LSTM(128, return_sequences=False, dropout=0.1, recurrent_dropout=0.1))
lstm_model.add(Dense(128, activation='relu'))
lstm_model.add(Dropout(0.5))
lstm_model.add((Dense(target_vocab_size, activation='softmax')))

lstm_model.compile(optimizer=Adam(0.002), loss='sparse_categorical_crossentropy', metrics=['accuracy'])

history = lstm_model.fit(X, Y, batch_size = 32, callbacks=CALLBACK, epochs = 100, validation_split = 0.25) #At this line the error is raised!

形状:

1)

  • src_vocab_size =
  • X.shape = (7200,147)
  • Y.shape = (7200,147,=186个)

我已经在这里看过类似的问题了,并尝试添加一个整形层

代码语言:javascript
复制
simple_lstm_model.add(Reshape((-1,)))

但这只会导致以下错误:

"TypeError:__int__返回非int(类型NoneType)“

对于所有模型,我都以同样的方式对数据集进行预处理,这真的很奇怪,除了上面的内容外,它的工作原理还不错。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-25 10:31:41

在调用LSTM构造函数时,应该有return_sequences=Truereturn_state=False

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

逻辑和标签必须具有相同的一维,得到逻辑形状为32,186和标签形状为4704。

逻辑应该是三维的:批大小×序列长度×类数.序列的长度是147,实际上是32×147 = 4704 (标签的数目)。这可以告诉你序列的长度消失了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58543163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档