开发者社区 问答 正文

我如何获得DeppPavlov分类器中的概率?

我使用DeepPavlov训练分类器,然后当我为某些样本函数调用训练模型时,仅返回一个类标签,但是我想获取每个类的概率。我没有找到可以获取概率的函数参数。有没有人遇到过这样的问题?谢谢!

from deeppavlov import configs, train_model

model = train_model(configs.classifiers.intents_snips)

model(['Some sentence'])

我希望输出类似np.array的类数,但是当前输出是一个像['PlayMusic']的标签。

展开
收起
被纵养的懒猫 2019-09-27 19:38:22 457 分享 版权
阿里云 AI 助理回答

在DeepPavlov中,如果你想要获取模型对每个类别的概率预测而不是直接的类别标签,通常需要访问模型内部的预测方法,并且该方法应该能够返回预测的概率分布。虽然DeepPavlov的具体实现可能因版本而异,但大多数深度学习框架都提供了这样的功能。

对于你的情况,尽管直接使用model(['Some sentence'])只返回了最高概率的类别,但DeepPavlov的分类器模型在训练后通常会包含一个可以给出概率分布的方法。你可以尝试直接查看模型对象的属性或方法来寻找如何获得概率值。

一个常见的做法是检查模型是否有一个类似于predict_probapredict_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上提出问题也是个好办法。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答地址: