运行FG2020亲属关系基线模型报_logger_find_caller参数错误如何修复
报错根因
你当前使用的TensorFlow 1.14.0、Keras 2.2.4均为2019年发布的旧版本,官方最高适配Python 3.7,而你的环境Python版本为3.8.1。Python 3.8对logging模块的findCaller方法新增了stacklevel参数,旧版本TensorFlow的日志调用逻辑没有适配该改动,触发参数不匹配报错。
修复方案
按优先级从高到低排列:
- 方案1:降级Python版本(最稳定,无需修改代码)
重新用Anaconda创建Python 3.7版本的虚拟环境,重新安装依赖即可:
该方案完全匹配原项目的依赖版本要求,不会出现其他兼容性问题。# 创建新虚拟环境 conda create -n env-kinship-new python=3.7 conda activate env-kinship-new # 安装对应版本依赖 pip install tensorflow==1.14.0 keras==2.2.4 keras-vggface pillow numpy - 方案2:修改TensorFlow日志逻辑(不想更换Python版本可选择)
找到虚拟环境路径下的lib/python3.8/site-packages/tensorflow/python/platform/tf_logging.py文件,修改其中所有日志调用方法,过滤掉多余的stacklevel参数:
找到所有类似get_logger().xxx(msg, *args, **kwargs)的调用,在前面加一行:
覆盖kwargs.pop('stacklevel', None)warning、error、info、debug所有方法即可解决参数不匹配问题。 - 方案3:关闭TensorFlow废弃警告(临时快速验证用)
在你运行的代码最开头添加以下代码,跳过废弃警告的打印逻辑,也就不会触发日志模块的报错:import tensorflow as tf tf.logging.set_verbosity(tf.logging.ERROR) import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'
内容的提问来源于stack exchange,提问作者NNNNNNN
相关产品推荐
相关产品推荐

