python - 当未从转换器中指定时,是否随机选择预训练模型
问题描述
我正在尝试使用来自 huggingface 的模型来实现一个 QA 系统。我不明白的一件事是,当我没有指定我用于问答的预训练模型时,模型是随机选择的吗?
from transformers import pipeline
# Allocate a pipeline for question-answering
question_answerer = pipeline('question-answering')
question_answerer({
'question': 'What is the name of the repository ?',
'context': 'Pipeline have been included in the huggingface/transformers repository'
})
输出:
{'score': 0.5135612454720828, 'start': 35, 'end': 59, 'answer': 'huggingface/transformers'}
我知道如何通过添加模型名称(例如,bert-base-uncased)作为模型参数来指定模型,但是当您没有指定任何内容时,它使用的是哪一个?它在拥抱脸上使用所有模型的组合吗?我找不到答案。
解决方案
模型不是随机选择的。管道中的任何任务都会选择与任务接近的适当模型。选择一个针对您所需任务和数据集的目标进行了严格训练的模型。例如,sentiment-analysis
管道可以选择在 SST 任务上训练的模型。
同样,对于question-answering
,它选择AutoModelForQuestionAnswering
类distilbert-base-cased-distilled-squad
作为默认模型,因为 SQUAD 数据集与问答任务相关联。
要获取列表,您可以在SUPPORTED_TASKS
此处查看变量
推荐阅读
- overriding - Prestashop 1.7 覆盖 CmsController
- python-3.x - 无法在嵌套表中的 Python Selenium 中使用 CSS 选择器引用元素
- javascript - JS中的递归函数问题
- python - python/tkinter 屏幕停止显示画布更新
- android - Android - 在 EditText 中格式化电话号码
- python - Groupby 中的每个项目
- perl - perl 模块 Class::HPLOO v0.23 安装问题 #2
- bots - 如何删除 Telegram 中其他机器人的消息?
- java - 如何向模块路径添加依赖项?
- ros - ROS 访问网络摄像头