如何解决TensorFlow报错Not creating XLA devices及测试无界面问题
问题解决方案
一、无测试交互界面修复
你遇到的界面不弹出问题核心是代码存在多处语法和逻辑错误,按以下步骤修改即可:
- 修复循环缩进错误:你当前
while True循环仅包含摄像头读帧的一行代码,后续所有图像预处理、预测、窗口渲染逻辑都在循环外,导致程序只会无限读取摄像头帧,永远不会执行显示相关代码,需要将读帧之后到按键判断之前的所有代码全部缩进,放到while True循环内部。 - 调整XLA环境变量设置顺序:
os.environ['TF_XLA_FLAGS'] = '--tf_xla_enable_xla_devices'要放到import tensorflow as tf之前执行,导入TensorFlow之后再设置环境变量不会生效。 - 修改窗口显示逻辑:不要把
cv2.imshow("Result", imgOrignal)放在概率阈值判断的if分支内部,否则识别概率低于阈值时不会弹出主窗口,需要将该行代码移到if分支外侧。 - 修正按键退出逻辑:
把原代码的
替换为if cv2.waitKey(1) and 0xFF == ord('q'): "break" cv2.waitkey(0) == ord(q)
原代码存在逻辑运算符错误、break加引号、waitKey大小写错误、q未加引号等多个问题,且最后一行属于无效代码可直接删除。if cv2.waitKey(1) & 0xFF == ord('q'): break - 适配高版本TensorFlow接口:如果你的TensorFlow版本≥2.6,
predict_classes方法已被移除,可替换为classIndex = np.argmax(model.predict(img), axis=-1)。
二、TensorFlow报错修复
你看到的所有报错都属于GPU相关的警告日志,本身不影响CPU模式下的程序运行:
- 如果你没有Nvidia显卡、不需要GPU加速,直接在导入TensorFlow之前添加
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'即可屏蔽所有INFO和WARNING级别的日志,不会再弹出CUDA相关的提示。 - 如果你需要使用GPU加速,安装和你当前TensorFlow版本匹配的CUDA 11.0、cuDNN即可消除该警告。
内容的提问来源于stack exchange,提问作者Chowdhury Joy
相关产品推荐
相关产品推荐

