当前位置: 首页 > news >正文

连接Huggingface报requests.exceptions.SSLError错误

最近在学习使用 SHAP 算法解释 BERT 模型的输出结果,然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误,本文用于记录错误类型和解决错误的方法。

1 代码示例

SHAP 官方展示的代码如下:

import datasets
import numpy as np
import scipy as sp
import torch
import transformers
from transformers import BertTokenizer, BertForSequenceClassification
import shap# load a BERT sentiment analysis model
tokenizer = transformers.DistilBertTokenizerFast.from_pretrained("distilbert-base-uncased"
)
model = transformers.DistilBertForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english"
).cuda()# define a prediction function
def f(x):tv = torch.tensor([tokenizer.encode(v, padding="max_length", max_length=512, truncation=True) for v in x]).cuda()outputs = model(tv)outputs = outputs[0].detach().cpu().numpy()scores = (np.exp(outputs).T / np.exp(outputs).sum(-1)).Tval = sp.special.logit(scores[:, 1])  # use one vs rest logit unitsreturn val# build an explainer using a token masker
explainer = shap.Explainer(f, tokenizer)# explain the model's predictions on IMDB reviews
imdb_train = datasets.load_dataset("imdb")["train"]
shap_values = explainer(imdb_train[:10], fixed_context=1, batch_size=2)
shap.plots.bar(shap_values.abs.sum(0))

2 报错详情

在安装好所有相关依赖库后,运行上述代码出现了如下错误:

大致意思是找不到 dataset_info.json 文件,也就是说这个文件没有被成功下载,于是尝试打开科学上网。在开启科学上网后,继续运行代码出现下列关于 SSLError 的错误:

说明网络连接仍然存在问题,无法访问到 Huggingface。在网上搜罗了各种方法后,终于找到了相应的解决方案,亲测有效。

3 解决方案

首先找到目前使用的深度学习环境中的 request.py 文件,例如在我的环境中该文件的路径为:

D:\Anaconda\envs\test\Lib\urllib\request.py

然后通过搜索 proxyServer 关键字定位到下图代码处:

将 else 块中的代码修改为下列代码:

proxies['http'] = 'http://%s' % proxyServer
proxies['https'] = 'http://%s' % proxyServer
proxies['ftp'] = 'http://%s' % proxyServer

修改完的代码如下所示:

重新运行代码(注意继续保持科学上网):

成功下载模型!

4 参考

[1] Welcome to the SHAP documentation — SHAP latest documentation

[2] huggingface(_hub)下载load报错ConnectionError: Couldn‘t reach ‘fusing/fill50k‘ on the Hub (SSLError)解决指南!_dataset hub connectionerror-CSDN博客

[3] 【日常踩坑】从 SSLEOFError 到正确配置 Proxy-CSDN博客

相关文章:

  • 数据库-连接查询-连接查询
  • 【Java】图的初识
  • MYSQL in和exists
  • Spark日志有哪些?
  • 【接口自动化测试】第二节.Requests库和接口对象封装
  • 异构集成封装类型2D、2.1D、2.3D、2.5D和3D封装技术
  • 注意力机制新突破!21种创新融合思路汇总!让技术持续飞跃!
  • C# —— while循环语句
  • C++ day5
  • Perl语言快速入门学习
  • php配合fiddler批量下载淘宝天猫商品数据分享
  • 探索 JQuery EasyUI:构建简单易用的前端页面
  • 服务器数据恢复—热备盘未完全启用导致raid5阵列崩溃的数据恢复案例
  • 如何在服务器上部署一个java程序
  • 电脑提示d3dcompiler_47.dll丢失的解决方法,实测靠谱的5种方法
  • C++入门教程(10):for 语句
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • E-HPC支持多队列管理和自动伸缩
  • es的写入过程
  • HashMap剖析之内部结构
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • java小心机(3)| 浅析finalize()
  • SwizzleMethod 黑魔法
  • 从零开始在ubuntu上搭建node开发环境
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 给第三方使用接口的 URL 签名实现
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 配置 PM2 实现代码自动发布
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • # wps必须要登录激活才能使用吗?
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • (1)常见O(n^2)排序算法解析
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (分类)KNN算法- 参数调优
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (三)uboot源码分析
  • (三十五)大数据实战——Superset可视化平台搭建
  • (四)JPA - JQPL 实现增删改查
  • (四)模仿学习-完成后台管理页面查询
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (一)、软硬件全开源智能手表,与手机互联,标配多表盘,功能丰富(ZSWatch-Zephyr)
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)iOS字体
  • ... 是什么 ?... 有什么用处?
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net Winform开发笔记(一)
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • .NET单元测试使用AutoFixture按需填充的方法总结