使用TensorFlow Datasets下载CatsVsDogs数据集遇校验和错误求助
解决TensorFlow Datasets Cats Vs. Dogs数据集校验和错误问题
问题原因
你手动修改了cats_vs_dogs数据集的下载URL,但TFDS内置了该数据集的校验和验证机制,新URL下载的文件和预设的校验值不匹配,因此触发NonMatchingChecksumError。
解决方案
方案1:使用TFDS默认配置下载(推荐)
直接移除手动修改URL的代码,TFDS会自动使用官方维护的数据源和校验信息,从根源避免校验不匹配问题:
import tensorflow as tf import tensorflow_datasets as tfds # 直接加载数据集,无需手动修改URL dataset = tfds.load('cats_vs_dogs', split=tfds.Split.TRAIN, data_dir='data/')
方案2:手动指定URL并同步更新校验和
如果因网络限制必须使用自定义URL,需要先获取该URL对应文件的SHA256校验和,再同步修改TFDS的校验配置:
- 手动下载文件:访问你指定的URL,将
kagglecatsanddogs_5340.zip下载到本地 - 计算SHA256校验和:
- Linux/macOS终端执行:
shasum -a 256 kagglecatsanddogs_5340.zip - Windows命令行执行:
certutil -hashfile kagglecatsanddogs_5340.zip SHA256
- Linux/macOS终端执行:
- 修改TFDS配置:同时更新URL和对应的校验和:
import tensorflow as tf import tensorflow_datasets as tfds # 替换为你计算得到的SHA256值 new_checksum = "你的文件SHA256校验和" # 修改URL和校验和 setattr(tfds.image.cats_vs_dogs, '_URL', "https://download.microsoft.com/download/3/E/1/3E1C3F21-ECDB-4869-8368-6DEBA77B919F/kagglecatsanddogs_5340.zip") setattr(tfds.image.cats_vs_dogs, '_CHECKSUM', new_checksum) # 加载数据集 dataset = tfds.load('cats_vs_dogs', split=tfds.Split.TRAIN, data_dir='data/')
方案3:清理缓存文件
如果之前已经下载了错误的缓存文件,需要先删除data/目录下的相关缓存,再重新下载:
- 删除
data/downloads/下的对应临时文件 - 删除
data/cats_vs_dogs/下的已生成数据集文件
内容的提问来源于stack exchange,提问作者user1245262
相关产品推荐
相关产品推荐

