首页 > 解决方案 > RNN 和词分类的维度错误

问题描述

我对 NLP 很陌生,我想根据语言对不同的单词进行分类(基本上我的模型应该告诉我一个单词是法语、英语还是西班牙语等等)。

当我拟合以下模型时,出现尺寸错误。“数据集”包含单词,它是一个大小为 (1550, 19) 的填充张量,“y”包含不同的语言,它也是一个大小为 (1550, 10) 的填充张量。

np.random.seed(42)
tf.random.set_seed(42)

from tensorflow.keras.layers import LSTM, GRU, Input, Embedding, Dense

input = Input(shape=[None])
z = Embedding(max_id + 1, 128, input_shape=[None], mask_zero=True)(input)
z = GRU(128)(z)
output = Dense(18, activation='softmax')(z)

model = keras.models.Model(input, output)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

h = model.fit(dataset, y, epochs=5)

ValueError:形状 (None, 10) 和 (None, 18) 不兼容

你看到问题出在哪里了吗?

谢谢!

标签: pythonkerasnlpdimension

解决方案


该消息告诉您形状不兼容,它们需要匹配。我会将此作为评论,但由于我的声誉,我不能,所以这就是我直接回答的原因,但是我不确定它是否有效,您是否尝试过:

output = Dense(10, activation='softmax')(z)

推荐阅读