运行TensorFlow DeepLab的model_test.py时出现报错求助
你在验证DeepLab安装时碰到的这个MKL相关错误,我之前也遇到过类似情况,大概率是环境兼容性或者MKL配置的问题。下面给你几个实用的解决思路:
1. 先排查版本兼容性问题
这个错误的核心是MKL concat操作的原语描述符创建失败,最常见的原因就是你使用的TensorFlow版本和系统中的MKL库不匹配。如果是用pip安装的预编译包,建议换成官方专门做了MKL优化的tensorflow-mkl版本,而且要选和你的DeepLab代码兼容的版本(比如DeepLab早期分支一般对应TensorFlow 1.x系列)。
2. 临时禁用MKL验证DeepLab核心功能
如果你只是想先确认DeepLab的代码安装是否正常,可以临时禁用MKL优化:
在运行测试脚本前先设置环境变量:
export TF_DISABLE_MKL=1
然后再执行测试命令:
python deeplab/model_test.py
这样TensorFlow会回退到非MKL的实现,绕过这个concat操作的问题,先确认DeepLab本身的功能是否正常。
3. 重新安装适配的TensorFlow版本
如果禁用MKL后测试能正常通过,那就坐实了是MKL兼容问题。可以卸载当前的TensorFlow,重新安装对应版本的tensorflow-mkl:
pip uninstall tensorflow -y pip install tensorflow-mkl==1.13.1 # 版本号需匹配你的DeepLab代码,多数早期DeepLab分支适配TF1.13/1.14
要是你是自己源码编译的TensorFlow,需要重新编译,确保编译时MKL的依赖配置正确,使用官方推荐的编译参数。
4. 极端情况:检查测试用例输入维度
虽然概率不高,但有时候测试用例里的张量维度可能触发了MKL的边界问题。你可以试着修改model_test.py里的测试输入形状,比如调整concat的轴或者张量大小,看看能不能绕过错误,但这只是临时调试方案,还是建议从环境适配入手解决根本问题。
你提供的错误日志关键信息:
2018-04-25 10:54:23.488868: W tensorflow/core/framework/op_kernel.cc:1273] OP_REQUIRES failed at mkl_concat_op.cc:784 : Aborted: Operation received an exception:Status: 3, message: could not create a concat primitive descriptor, in file tensorflow/core/kernels/mkl_concat_op.cc:781
内容的提问来源于stack exchange,提问作者user288609

