Mac端Spyder运行MNIST手写数字识别代码无法显示图像与预测结果
解决Mac端Spyder环境下MNIST手写数字图像无法显示的问题
嘿,我来帮你搞定这个问题!首先得说清楚:你看到的那些TensorFlow警告完全不会影响图像显示——它们只是版本迭代的过时API提示,还有CPU性能优化的建议,不用太在意。真正让图像出不来的问题,是Matplotlib在Mac版Spyder里的后端设置和Windows不一样。
下面给你几个实用的解决办法,按顺序试就行:
方法1:在代码里直接指定Matplotlib后端
在导入matplotlib之后,立刻加上两行代码强制切换到交互式后端,这样Spyder就能正确渲染图像了:
import tensorflow as tf import numpy as np from matplotlib import pyplot as plt # 新增这两行,解决Mac Spyder图像显示问题 plt.switch_backend('TkAgg') %matplotlib auto # 或者用%matplotlib inline,根据你的Spyder版本选一个 mnist = tf.keras.datasets.mnist (x_train, y_train),(x_test, y_test) = mnist.load_data() x_train, x_test = x_train / 255.0, x_test / 255.0 # ... 后面的代码保持不变
方法2:修改Spyder的全局设置(一劳永逸)
如果不想每次写代码都加那两行,可以直接改Spyder的内置设置:
- 打开Spyder,点击顶部菜单栏的
Tools→Preferences - 在弹出的窗口里选
IPython console→Graphics - 把
Backend选项从默认的Inline改成Automatic或者TkAgg - 点
Apply和OK,重启Spyder之后再运行代码,图像就能正常显示了
方法3:优化图像显示的代码细节
有时候连续调用plt.show()在Mac上会有延迟,你可以调整循环里的代码,让图像显示更稳定,同时还能让手写数字更清晰:
for i in range(7): print("\nThe following digit is a ",x_pred_value[i]) plt.figure() # 每次循环创建新的图像窗口,避免覆盖 plt.imshow(x_test[i], cmap='gray') # 加上灰度映射,数字显示更清楚 plt.axis('off') # 关掉坐标轴,让图像更干净 plt.show(block=True) # 强制等待图像关闭后再继续下一次循环
最后提一句:如果你的Spyder版本比较老,建议更新到最新稳定版,新版本对Mac系统的兼容性会更好哦~
内容的提问来源于stack exchange,提问作者Ani
相关产品推荐
相关产品推荐

