TensorFlow Datasets加载KITTI数据集触发Assertion Error求助
问题描述
我被这个问题困扰多日,无法解决。在Jupyter Notebook中加载KITTI数据集时,无论是使用tfds.load()还是手动构建tfds.builder()调用download_and_prepare(),都会触发相同错误。
使用的版本:
- TensorFlow: 2.3.0
- TensorFlow Datasets: 3.1.0
代码示例1(tfds.load)
import tensorflow as tf # 2.3.0 import tensorflow_datasets as tfds # 3.1.0 import matplotlib.pyplot as plt import pandas as pd import numpy as np train_ds, test_ds = tfds.load( "kitti", split=['train', 'test'], data_dir='../../tensorflow_datasets', with_info=True, as_supervised=True )
代码示例2(tfds.builder)
import tensorflow as tf # 2.3.0 import tensorflow_datasets as tfds # 3.1.0 import matplotlib.pyplot as plt import pandas as pd import numpy as np builder = tfds.builder(name='kitti', data_dir='../../tensorflow_datasets') builder.download_and_prepare(download_dir='../../tensorflow_datasets/downloads') ds = builder.as_dataset()
错误表现
从报错截图可见,错误集中在数据集文件的读取/预处理阶段,触发NotFoundError或文件处理异常,追溯到KITTI数据集的构建脚本逻辑中。
解决方案
1. 清理损坏的缓存文件
TFDS会缓存下载和预处理后的数据集,若缓存文件损坏会导致加载失败。删除相关缓存后重新下载:
# 切换到数据集目录 cd ../../tensorflow_datasets # 删除KITTI相关缓存 rm -rf kitti* # 删除下载缓存 rm -rf downloads/kitti*
之后重新运行代码,让TFDS重新下载并处理数据集。
2. 验证路径权限与有效性
确保指定的data_dir和download_dir存在且有读写权限:
import os # 检查路径是否存在 print(os.path.exists('../../tensorflow_datasets')) print(os.path.exists('../../tensorflow_datasets/downloads'))
若路径不存在,先创建:
mkdir -p ../../tensorflow_datasets/downloads
3. 修复版本兼容性问题
TensorFlow 2.3.0与TFDS 3.1.0可能存在兼容冲突,建议升级TFDS到适配版本(如4.0.0):
pip install tensorflow-datasets==4.0.0
可参考TFDS官方文档确认版本匹配关系。
4. 手动下载数据集
若自动下载失败,可手动从KITTI官方渠道获取数据集文件,放置到download_dir路径下,再重新运行download_and_prepare(),TFDS会跳过下载直接执行预处理。
5. 检查网络连接
确认当前网络可访问KITTI数据集的源服务器,必要时切换网络或使用代理完成下载。
内容的提问来源于stack exchange,提问作者Damiano Imola
相关产品推荐
相关产品推荐

