TensorFlow手写数字识别模型运行时Matplotlib无法显示图片问题
解决方案:TensorFlow 2.14.0手写数字识别模型加载与Matplotlib显示问题处理
一、CPU优化提示处理
控制台输出的CPU优化提示是TensorFlow默认性能提醒,本身不影响模型运行,可按需处理:
- 关闭提示:在代码开头添加配置屏蔽非必要日志
import os import tensorflow as tf # 屏蔽INFO和WARNING级别的日志 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' tf.get_logger().setLevel('ERROR') - 若需GPU加速:检查CUDA(11.8版本)、cuDNN(8.6版本)是否与TensorFlow 2.14.0匹配,确认环境变量配置正确,重新安装对应版本的TensorFlow-GPU包。
二、Matplotlib无法显示图片修复
从预处理逻辑、代码调用、后端配置三方面排查修复:
1. 补全显示必要代码
- 普通Python环境:绘图代码末尾必须添加
plt.show() - Jupyter Notebook环境:开头添加
%matplotlib inline,无需额外调用plt.show()
2. 对齐MNIST图片预处理逻辑
MNIST数据集为黑底白字、28x28灰度图,自定义图片需匹配该格式,否则会同时影响预测精度和显示效果:
import matplotlib.pyplot as plt import cv2 img_path = "your_digit_image.png" # 转为灰度图并缩放到28x28 img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (28, 28)) # 反转颜色(若自定义图片是白底黑字) img = 255 - img # 归一化到0-1区间 img = img / 255.0 # 显示预处理后的图片 plt.imshow(img, cmap='gray') plt.axis('off') # 隐藏坐标轴 plt.show() # 调整维度适配模型输入格式 img_input = img.reshape(1, 28, 28, 1)
3. 切换Matplotlib后端
桌面环境下若仍无法显示,切换后端配置(需在导入pyplot前设置):
import matplotlib matplotlib.use('TkAgg') # 或QtAgg、GTK3Agg,根据系统支持选择 import matplotlib.pyplot as plt
完整示例代码
import os import tensorflow as tf import matplotlib matplotlib.use('TkAgg') import matplotlib.pyplot as plt import cv2 # 关闭TensorFlow冗余日志 os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' tf.get_logger().setLevel('ERROR') # 加载训练好的模型 model = tf.keras.models.load_model('mnist_model.h5') # 处理自定义图片 img_path = "test_digit.png" if not os.path.exists(img_path): print("图片路径不存在,请检查路径") else: # 预处理流程 img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE) img = cv2.resize(img, (28, 28)) img = 255 - img img = img / 255.0 # 显示图片 plt.imshow(img, cmap='gray') plt.axis('off') plt.show() # 执行预测 img_input = img.reshape(1, 28, 28, 1) pred = model.predict(img_input) print(f"识别结果:{pred.argmax()}")
内容的提问来源于stack exchange,提问作者zer0
相关产品推荐
相关产品推荐

