Caffe模型训练报错 📅 2026/6/23 14:41:32 昨晚调一个老项目的 Caffe 模型一敲训练命令直接给我甩出个红字暴击F0621 22:15:32.123456 12345 data_layer.cpp:102] Check failed: data_file_ ! NULL (null vs. not null)当时我整个人都懵了寻思着数据集明明都转成 LMDB 塞进去了文件怎么可能为空盯着屏幕排查了半个多小时甚至怀疑是权限问题。结果最后发现原因弱智得让人想砸键盘——Prototxt 配置文件里的 source 顺手写成了相对路径。1. 核心死穴Caffe 的 Data 层只认绝对路径别拿调 PyTorch 或 TensorFlow 的习惯去伺候 Caffe。Caffe 底层是用 C 写的它在解析train.prototxt里的source参数时默认是基于你当前执行命令的终端目录去寻找的而不是基于配置文件所在的目录。如果你写了个相对路径只要你敲命令的路径错了一丁点Caffe 就会睁眼瞎直接报data_file_ ! NULL崩溃。2. 别整花活直接看两段配置对比【❌ 踩坑的作死配置】layer { name: data type: Data top: data top: label data_param { source: data/train_lmdb # 错只要你没在特定目录下执行Caffe 绝对找不到 batch_size: 64 backend: LMDB } }【✅ 实测秒过的硬核姿势】老老实实把路径从根目录开始写全哪怕路径长得要死也别省那两个字符layer { name: data type: Data top: data top: label data_param { source: data/train_lmdb # 错只要你没在特定目录下执行Caffe 绝对找不到 batch_size: 64 backend: LMDB } }3. 深夜排障的两条铁律绝对路径绝对路径绝对路径 重要的事情说三遍。不光是 source下面的 mean_file均值文件路径如果用到了也必须一律用绝对路径别写什么 …/data/mean.binaryprotoCaffe 不吃这一套。复制路径前先用 ls 敲一下 别太相信自己的眼睛。在写进配置之前先在终端里 ls /home/user/my_project/data/train_lmdb确保回车之后能看到里面的 data.mdb 和 lock.mdb。要是提示文件不存在赶紧检查是不是字母拼错了。总结一句话Caffe 的报错提示简直跟谜语人一样找不到路径就直说非要整一句 data_file_ ! NULL 吓唬人。以后遇到 data_layer.cpp 报错第一件事就是把配置文件里的相对路径全删了。