许可证:apache-2.0
标签:
- 训练生成
数据集:
- squad
模型索引:
- 名称:t5-end2end-question-generation
结果:
- 任务:
名称:序列到序列语言建模
类型:文本到文本生成
数据集:
名称:squad
类型:squad
参数:纯文本
t5-end2end-question-generation
该模型是基于squad数据集微调的t5-base版本,用于根据上下文生成问题。
👉 若想学习如何微调t5模型实现相同功能,可参考此教程
示例:
上下文:"Python是一种解释型、高级、通用编程语言。由Guido van Rossum创建并于1991年首次发布,Python的设计哲学强调通过显著使用空格来提高代码可读性。"
生成问题:
Python是谁创建的?
Python何时首次发布?
Python的设计哲学是什么?
在评估集上达到以下效果:
使用模型
from transformers import T5ForConditionalGeneration, T5TokenizerFast
hfmodel = T5ForConditionalGeneration.from_pretrained("ThomasSimonini/t5-end2end-question-generation")
text= "1789年8月4日国民制宪议会废除封建特权,以及拉法耶特在托马斯·杰斐逊协助下起草、8月26日通过的《人权与公民权宣言》,为君主立宪制(1791年9月4日-1792年9月21日)铺平道路。尽管发生这些剧变,宫廷生活仍在继续,而巴黎因9月面包短缺局势危急。1789年10月5日,巴黎民众涌入凡尔赛并迫使王室迁往巴黎杜伊勒里宫,在拉法耶特的国民警卫队监视下软禁生活,而普罗旺斯伯爵夫妇获准居住在小卢森堡宫,直至1791年6月20日流亡。"
def run_model(input_string, **generator_args):
generator_args = {
"max_length": 256,
"num_beams": 4,
"length_penalty": 1.5,
"no_repeat_ngram_size": 3,
"early_stopping": True,
}
input_string = "generate questions: " + input_string + " </s>"
input_ids = tokenizer.encode(input_string, return_tensors="pt")
res = hfmodel.generate(input_ids, **generator_args)
output = tokenizer.batch_decode(res, skip_special_tokens=True)
output = [item.split("<sep>") for item in output]
return output
run_model(text)
训练超参数
- 学习率:0.0001
- 训练批大小:4
- 评估批大小:4
- 随机种子:42
- 梯度累积步数:16
- 总训练批大小:64
- 优化器:Adam(beta1=0.9,beta2=0.999,epsilon=1e-08)
- 学习率调度器类型:线性
- 训练轮次:7
训练结果
训练损失 |
轮次 |
步数 |
验证损失 |
2.5834 |
0.34 |
100 |
1.9107 |
1.9642 |
0.68 |
200 |
1.7227 |
... |
... |
... |
... |
1.4776 |
6.78 |
2000 |
1.5691 |
框架版本
- Transformers 4.10.3
- PyTorch 1.9.0+cu102
- Datasets 1.12.1
- Tokenizers 0.10.3