tf_keras 2.18.0中使用tf.compat.v1损失函数仍现弃用警告的疑问
TensorFlow弃用警告已使用tf.compat.v1仍触发的原因及解决办法
可能的原因
- 警告行号并非实际调用点:警告中显示的行号只是触发警告的位置(比如字典定义时引用函数对象),但tf_keras内部其他模块可能仍在直接调用
tf.losses.sparse_softmax_cross_entropy,导致警告弹出。 - 版本兼容性问题:tf_keras 2.18.0与当前安装的TensorFlow版本不匹配,内部调用逻辑存在旧API引用。tf_keras版本通常需要和TensorFlow主版本保持一致(如tf_keras 2.18.x对应TensorFlow 2.18.x)。
- 字节码缓存未更新:Python的
.pyc字节码文件可能缓存了旧代码逻辑,即使你检查的源码是正确的,实际运行的仍是缓存的旧版本。
解决办法
1. 确认版本匹配
检查当前TensorFlow版本:
import tensorflow as tf print(tf.__version__)
若版本不是2.18.x,执行命令调整版本:
pip install tensorflow==2.18.0
2. 清除字节码缓存
删除项目目录和虚拟环境Lib/site-packages/tf_keras路径下的所有__pycache__文件夹及.pyc文件,重新运行项目。
3. 屏蔽特定警告(功能不受影响时)
若确认警告不影响模型运行,可在项目入口添加代码过滤:
import tensorflow as tf # 全局降低日志级别(屏蔽所有INFO和WARNING) tf.get_logger().setLevel('ERROR') # 或精准屏蔽该特定警告 import warnings warnings.filterwarnings( "ignore", category=DeprecationWarning, message=r".*The name tf.losses.sparse_softmax_cross_entropy is deprecated.*" )
4. 重新安装tf_keras
若怀疑源码损坏,卸载后重装指定版本:
pip uninstall -y tf_keras pip install tf_keras==2.18.0
5. 禁止手动修改tf_keras源码
第三方库源码由官方维护,手动修改会导致版本不一致,后续更新包会覆盖修改,还可能引入未知错误,不建议操作。
内容的提问来源于stack exchange,提问作者Maria Deniston
相关产品推荐
相关产品推荐

