如何使用SentenceTransformers从本地路径加载已保存的Bert预训练模型
报错原因排查
- 路径填写错误:当你传入
'Bert_Model'作为参数时,SentenceTransformer会优先检索当前运行脚本的同级目录下是否有该文件夹,找不到的情况下会尝试从Hugging Face Hub拉取同名模型,拉取失败会导致模型实例初始化异常,model变量赋值失败,后续调用时就会抛出NameError: name 'model' is not defined报错 - 库版本不兼容:你Colab环境中保存模型时使用的sentence-transformers版本,和本地运行环境的库版本差异过大,会导致模型文件无法正常解析,加载失败。
正确加载方法
- 先将本地sentence-transformers库升级到最新版本,执行命令:
pip install --upgrade sentence-transformers - 找到你下载到本地的
Bert_Model文件夹的完整绝对路径,例如Windows下路径为C:\Users\xxx\Downloads\Bert_Model,Mac/Linux下路径为/home/xxx/Downloads/Bert_Model - 使用绝对路径加载模型,代码示例:
from sentence_transformers import SentenceTransformer # 替换为你本地的Bert_Model文件夹实际绝对路径 local_model_path = r"C:\Users\xxx\Downloads\Bert_Model" model = SentenceTransformer(local_model_path) # 验证加载是否成功 test_embedding = model.encode("test sentence") print(test_embedding.shape)
- 若仍加载失败,可添加
local_files_only=True参数,强制仅读取本地文件,避免网络请求导致的异常:
model = SentenceTransformer(local_model_path, local_files_only=True)
内容的提问来源于stack exchange,提问作者Sahar Rezazadeh
相关产品推荐
相关产品推荐

