使用keras.datasets.mnist.load_data()下载MNIST数据集持续报错如何解决
报错原因
- 核心原因是
tf.keras.datasets.mnist.load_data()默认的数据源地址是谷歌云存储域名,国内网络环境下无法稳定访问该资源,导致下载连接超时、进度卡住。 - 次要可能原因:之前触发过下载但中途中断,本地缓存目录中存在损坏的不完整MNIST数据集文件,导致后续下载流程异常。
解决方案
方案1:手动放置本地数据集(最稳定)
- 自行下载完整的
mnist.npz文件,文件大小约11MB,校验哈希为731c5ac602752760c8e48fbffcf8c3b850d9dc2a2aedcf2cc48468fc17b673d1。 - 找到TensorFlow Keras的默认缓存目录:
- Windows系统:
C:\Users\你的用户名\.keras\datasets - Mac/Linux系统:
~/.keras/datasets
- Windows系统:
- 将下载好的
mnist.npz直接放入上述目录,再运行原有代码即可直接读取本地文件,无需再次下载。 - 注意:操作前先删除目录中已存在的不完整
mnist.npz或带.part后缀的临时下载文件,避免读取异常。
方案2:替换为国内镜像源下载
在代码中指定国内可访问的数据集镜像地址,修改后的代码示例如下:
import tensorflow as tf # 提前从国内镜像下载数据集到本地缓存,origin参数替换为可用的国内MNIST npz文件地址 tf.keras.utils.get_file( fname="mnist.npz", origin="国内可用的MNIST npz镜像地址", cache_subdir="datasets", file_hash="731c5ac602752760c8e48fbffcf8c3b850d9dc2a2aedcf2cc48468fc17b673d1" ) # 调用原有接口加载数据 (x_train, y_train), (x_test, y_test)= tf.keras.datasets.mnist.load_data() print(x_train[0])
方案3:配置网络代理
如果有可用的代理服务,在运行代码前给当前终端配置全局代理,再执行代码即可正常从官方地址下载数据集。
内容的提问来源于stack exchange,提问作者Xvx
相关产品推荐
相关产品推荐

