我使用DeepPavlov训练分类器,然后当我为某些样本函数调用训练模型时,仅返回一个类标签,但是我想获取每个类的概率。我没有找到可以获取概率的函数参数。有没有人遇到过这样的问题?谢谢!
from deeppavlov import configs, train_model
model = train_model(configs.classifiers.intents_snips)
model(['Some sentence'])
我希望输出类似np.array的类数,但是当前输出是一个像['PlayMusic']的标签。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在DeepPavlov中,如果你想要获取模型对每个类别的概率预测而不是直接的类别标签,通常需要访问模型内部的预测方法,并且该方法应该能够返回预测的概率分布。虽然DeepPavlov的具体实现可能因版本而异,但大多数深度学习框架都提供了这样的功能。
对于你的情况,尽管直接使用model(['Some sentence'])
只返回了最高概率的类别,但DeepPavlov的分类器模型在训练后通常会包含一个可以给出概率分布的方法。你可以尝试直接查看模型对象的属性或方法来寻找如何获得概率值。
一个常见的做法是检查模型是否有一个类似于predict_proba
或predict_scores
的方法。如果DeepPavlov的配置或训练后的模型没有直接提供这样的接口,你可能需要深入到模型的内部结构中去调用其预测层的输出,这通常涉及到对模型架构的理解和一些自定义代码。
这里是一个假设性的示例,展示如何尝试获取概率(请注意,实际代码可能根据DeepPavlov的具体版本和模型配置有所不同):
# 假设model对象有一个方法或者可以通过某种方式访问到预测概率
predictions = model.predict(['Some sentence'], return_probas=True)
# 或者,如果存在特定的方法
probas = model.get_probabilities(['Some sentence'])
# 如果上述方法不存在,你可能需要手动从模型的最后一层获取logits并应用softmax
# 但这需要对模型内部结构有深入了解
# logits = model.get_logits(['Some sentence'])
# probas = softmax(logits, axis=-1)
请查阅DeepPavlov的官方文档或相关社区论坛,以找到针对你所使用的具体模型和版本的正确方法。如果文档不明确,查看源代码或在GitHub上提出问题也是个好办法。