我在预测命名实体识别集时有点问题。 经过我的训练和测试,一切都很顺利。现在我想测试原始数据,比如字符串
我试着用
model.predict(['Elon musk is good guy , he owns spacex, tesla.'])
但是它抛出了erorr
UnimplementedError: Cast string to float is not supported
[[node functional_29/Cast (defined at <ipython-input-210-e13dae4a124d>:1) ]] [Op:__inference_predict_function_223088]
Function call stack:
predict_function
我有token2index和
tag2index,从训练集生成的词典。我试着将其转换并使用这些,但预测显示0
word = ['Elon musk is good guy , he owns spacex, tesla.']
word_index = [[token2idx[word] for word in word]]
X = pad_sequences(sequences=word_index, maxlen=7, padding='post')
predicted = np.argmax(model.predict(X), axis=-1)
print(predicted)
给予 数组([[0,0,0,0,0,0,0]] 但事实并非如此。甚至尝试了x_train[0]的一个片段句子,但它抛出的结果是这样的。 谢谢你的帮助
我猜你想预测单词,对吗
那么你应该把你的话分开:
更新
正如讨论所显示的,问题在于模型在学习过程中具有较高的准确性,但输出始终为零
由于y类的大小不是均匀分布的,因此模型了解到,改进一类的预测将很快提高精度。所以你的y数据是这样的:
[0,0,0,0,0,0,0,1,0,0,0,0,0,3,0]
。有三个类:0,1,3
模型可以快速学习预测零,因为这可以最大程度地提高精度但是该模型只学习预测0,这已经给了它很高的精确度。例如,当一个序列包含20个单词,因此20个y值和19个为0时,通过始终预测0,模型将达到95%的准确度。因此,在这种情况下,高精度是无法衡量模型质量的,因为为了提高所有类的模型性能,从95%跳到98%比从50%跳到95%更能改善模型
相关问题 更多 >
编程相关推荐