运行Keras构建裂纹检测CNN时出现pandas无'Series'属性报错
报错原因与解决方案
该报错与你编写的CNN模型代码无关,是TensorFlow/Keras在匹配输入数据集适配器时,调用pandas接口失败导致的,可按以下优先级排查解决:
- 排查本地文件命名冲突
最常见的原因是你的代码工作目录(C:\Users\First Surname\Documents\uni\USQ\2021\Coding\)下存在命名为pandas.py/pd.py的自定义文件,或是有同名的缓存文件,Python导入时优先读取了本地文件而非官方安装的pandas库。找到对应文件及__pycache__目录下的同名缓存,直接删除即可。 - 验证pandas与TensorFlow版本兼容性
从报错路径可判断你使用的是TensorFlow 2.6及更早版本(自带tf.keras),如果安装了2.x以上的高版本pandas,会出现接口不兼容问题。可执行命令安装匹配的旧版本pandas:
安装完成后重启编辑器再运行代码。pip install pandas==1.5.3 - 排查Python环境混乱问题
如果你设备上安装了多个Python版本,可能出现脚本运行的环境和pip安装pandas的环境不匹配的情况。可以在你的代码开头添加以下两行,运行后查看pandas的加载路径:
如果输出路径不是Python安装目录下的import pandas print(pandas.__file__)site-packages路径,就说明环境匹配错误,调整IDE的运行环境到你安装pandas的对应环境即可。 - 临时规避方案
如果你的train_ds、val_ds本身就是TensorFlow Dataset类型,不需要用到pandas相关功能,可以在代码最开头、导入TensorFlow/Keras之前添加以下代码,跳过pandas检测逻辑:import sys sys.modules['pandas'] = None
内容的提问来源于stack exchange,提问作者Vaughn Golding
相关产品推荐
相关产品推荐

