python - 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) 不兼容
你看到问题出在哪里了吗?
谢谢!
解决方案
该消息告诉您形状不兼容,它们需要匹配。我会将此作为评论,但由于我的声誉,我不能,所以这就是我直接回答的原因,但是我不确定它是否有效,您是否尝试过:
output = Dense(10, activation='softmax')(z)
推荐阅读
- reactjs - ReactJS - 如何将组件引用作为道具传递给另一个组件?
- bash - #~ 在 bash 脚本中是什么意思?
- c++ - 在 OpenCV 中放大对象轮廓
- algorithm - Matlab传递函数无法正确求和
- python - 在 python 中计算十六进制字符串 (\x00 ...\xff)
- ios - 按下返回按钮时在 UITextField 之间切换
- assembly - 为什么程序不打印数组的总和?
- unity3d - 无法使用 Unity SDK 验证 Watson Assistant 凭证
- python - 导入tensorflow报错:DLL加载失败:找不到指定的程序
- for-loop - Verilog 中的 For 循环不收敛