如何解决TensorFlow中出现的certificate verify failed证书过期错误
错误含义
你遇到的ssl.SSLCertVerificationError: certificate verify failed: certificate has expired是SSL证书校验失败错误,触发原因是datasets.cifar10.load_data()默认会从TensorFlow的官方远程服务器下载CIFAR10数据集,发起HTTPS请求时,Python的urllib库校验目标站点的SSL证书未通过,判定证书已过期,因此终止了连接和下载流程。
可行解决方案
下面按操作复杂度从低到高给出可落地的解决方法:
- 方法1:临时跳过SSL证书校验(适合快速调试场景)
在你现有代码的最开头添加两行代码,临时取消全局SSL证书校验,之后再执行数据集加载逻辑即可:
import ssl ssl._create_default_https_context = ssl._create_unverified_context
注意:该方法仅适合本地开发调试用,不要在生产环境中使用该配置。
- 方法2:手动放入本地数据集文件(安全且永久生效)
你可以从任意可信渠道获取CIFAR10的Python版本数据集压缩包cifar-10-batches-py.tar.gz,将该文件直接放入Windows系统下的Keras缓存目录:C:\Users\Admin\.keras\datasets(不需要解压),之后再次调用datasets.cifar10.load_data()会直接读取本地文件,不会发起网络请求,自然不会触发SSL报错。 - 方法3:更新Python根证书库
如果是本地Python环境自带的根证书过期导致的校验失败,可执行如下命令更新证书依赖库:pip install --upgrade certifi
更新完成后重新运行你的代码即可。 - 方法4:升级TensorFlow版本
部分旧版本TensorFlow内置的数据源证书配置过期,你可以升级TensorFlow到最新稳定版解决该问题,执行命令:pip install --upgrade tensorflow
内容的提问来源于stack exchange,提问作者Shield77
相关产品推荐
相关产品推荐

