BERT使用过程中的碰到的那些报错

BERT是谷歌2018年提出的语言模型,在十几个任务上达到了state-of-art。在这里本人在使用过程中总结了一下遇到的错误。

BERT推荐在TPU上运行,但是资源有限在GPU上跑也行,不行也能在cpu上跑(ps就是有些慢)

 

官方BERT的版本建议在tensorflow>=1.11的版本上运行,但是在本人服务器安装的是tensorflow-gpu=1.12的情况下,程序报错,

AttributeError: module 'tensorflow.python.platform.flags' has no attribute 'mark_flag_as_required'

根据官方回答是此版本没有这个属性(ps坑爹),于是只能安装其他版本的tensorflow

但根据测试其实低于1.11版本也可以运行的,就是1.12不能运行。

而且由于服务器的cuda版本是8.0,高版本的tensorflow-gpu不支持,报错

在cuda官网有相应的tensorflow版本推荐

也可以直接安装cpu版本的tensorflow,在linux服务器下安装anaconda比较方便,anaconda自带pyhon环境

<think>好的,我现在需要在Python交互环境中使用transformers库,但不太清楚具体步骤。首先,我得确认自己是否已经安装了Python和pip。因为transformers库是通过pip安装的,所以如果没有安装pip,可能需要先安装它。 接下来,我需要安装transformers库本身。根据经验,应该可以用pip install transformers命令来安装。不过可能还需要安装PyTorch或者TensorFlow,因为transformers通常依赖这些深度学习框架。但不确定是不是必须的,也许有些功能不需要。需要查阅文档确认。 安装完成后,进入Python交互环境,也就是在终端输入python或者python3,然后导入库。比如from transformers import pipeline。可能常见的用例是使用预训练模型,比如文本分类、问答系统等。比如用pipeline('text-classification')来创建一个分类器,然后输入文本得到结果。 然后,可能需要加载特定的模型和分词器。例如,使用AutoModel和AutoTokenizer来加载。步骤大致是:用AutoTokenizer.from_pretrained('模型名称')加载分词器,处理输入文本,生成输入张量,再通过模型得到输出,最后解析输出结果。 不过,具体步骤可能更详细。比如,处理文本时需要调用tokenizer的__call__方法或者encode方法,添加padding、truncation等参数。模型的输出可能是一个包含logits或其他结构的对象,需要进一步用softmax函数处理得到概率分布。 另外,可能需要注意模型的版本和对应的框架(PyTorch或TensorFlow),在加载模型时可能需要指定from_tf参数。或者,在保存和加载模型时需要注意文件路径是否正确。 在交互式环境中,可能需要逐行执行这些步骤,测试每一步是否成功。例如,先导入库,再加载分词器,处理样本文本,然后加载模型,进行推理。如果遇到错误,比如缺少依赖库,需要根据提示安装相应的包,比如安装datasets库来处理数据集。 最后,可能需要参考Hugging Face的官方文档或者示例代码,确保使用的方法和参数是正确的。如果有报错信息,可以搜索错误信息或者查看社区的讨论来解决。</think>以下是在Python交互环境中使用`transformers`库的逐步指南: --- ### 1. 安装库 ```python # 安装transformers及其依赖库 !pip install transformers datasets torch ``` 说明:`datasets`用于加载数据集,`torch`是PyTorch深度学习框架[^1]。 --- ### 2. 启动Python交互环境 在终端输入命令: ```bash python # 或 python3 ``` --- ### 3. 使用预训练模型流水线(Pipeline) ```python from transformers import pipeline # 示例1:文本分类 classifier = pipeline("text-classification") result = classifier("I love using Transformers!") print(result) # 输出分类结果,如情感分析 # 示例2:文本生成 generator = pipeline("text-generation", model="gpt2") generated_text = generator("In the future, AI will", max_length=50) print(generated_text[0]['generated_text']) ``` --- ### 4. 手动加载模型与分词器 ```python from transformers import AutoTokenizer, AutoModelForSequenceClassification # 加载模型和分词器 model_name = "bert-base-uncased" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForSequenceClassification.from_pretrained(model_name) # 处理输入文本 text = "Transformers are awesome!" inputs = tokenizer(text, return_tensors="pt", padding=True, truncation=True) # 推理 outputs = model(**inputs) logits = outputs.logits print(logits) # 输出原始预测值 ``` --- ### 5. 保存与加载本地模型 ```python # 保存模型和分词器 model.save_pretrained("./my_model") tokenizer.save_pretrained("./my_model") # 从本地加载 model = AutoModelForSequenceClassification.from_pretrained("./my_model") tokenizer = AutoTokenizer.from_pretrained("./my_model") ``` --- ### 6. 处理自定义任务(以问答为例) ```python from transformers import AutoModelForQuestionAnswering model = AutoModelForQuestionAnswering.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad") tokenizer = AutoTokenizer.from_pretrained("bert-large-uncased-whole-word-masking-finetuned-squad") context = "Hugging Face is a company based in New York." question = "Where is Hugging Face located?" inputs = tokenizer(question, context, return_tensors="pt") outputs = model(**inputs) answer_start = outputs.start_logits.argmax().item() answer_end = outputs.end_logits.argmax().item() + 1 answer = tokenizer.convert_tokens_to_string(tokenizer.convert_ids_to_tokens(inputs["input_ids"0][0][answer_start:answer_end])) print(answer) # 输出:"New York" ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值