You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复AttributeError: keras.backend无get_session属性及代码报错

解决AttributeError: module 'keras.backend' has no attribute 'get_session'的方案

这个错误我见得太多了——大概率是你在用TensorFlow 2.x版本的Keras(也就是tf.keras),但代码还停留在TF1.x的老写法上。keras.backend.get_session()这个方法在TF2里已经被移除了,因为TF2默认启用了即时执行模式(Eager Execution),不需要手动管理会话(Session)了。下面分两种情况给你具体的修复方案:

情况1:你使用的是TensorFlow内置的tf.keras

这是最常见的场景,直接根据你的需求选择下面的修复方式:

方式A:迁移到TF2的即时执行写法(推荐)

如果你的代码只是为了运行张量、获取结果,完全不需要手动创建会话。比如旧代码:

import keras.backend as K
sess = K.get_session()
output = sess.run(my_tensor)

直接改成:

# 把张量转换成numpy数组
output = my_tensor.numpy()
# 如果是执行某个操作,直接调用即可,不需要会话
my_custom_op()

即时执行模式下,张量运算会立即执行,不需要通过session.run()触发,调试起来更直观。

方式B:兼容旧代码(不推荐,但应急可用)

如果你必须保留旧的会话逻辑,可以用TF2兼容TF1的API,手动关闭即时执行并创建会话:

import tensorflow as tf
# 关闭即时执行模式
tf.compat.v1.disable_eager_execution()
# 创建会话
sess = tf.compat.v1.Session()
# 关联Keras后端的会话
tf.compat.v1.keras.backend.set_session(sess)

注意:这种写法属于过渡方案,TF1.x的API后续会逐步淘汰,建议还是慢慢迁移到TF2的写法。

情况2:你使用的是独立的Keras库(非tf.keras)

独立Keras在2.3.x版本之后也逐渐对齐TF2的模式,移除了get_session()。如果必须用这个方法,可以:

  • 降级到Keras 2.2.x版本(最直接的应急方案):
pip install keras==2.2.5
  • 或者同样改用TF兼容模式的写法,和上面情况1的方式B一致,导入tf.compat.v1来管理会话。

常见场景的额外提示

如果是在自定义损失函数、层或者回调函数里用到了get_session(),比如需要计算某个张量的值:

  • 旧代码:sess.run(some_tensor)
  • 新写法:some_tensor.numpy() 或者 tf.keras.backend.eval(some_tensor)(在图模式下可用)

记住,尽量拥抱TF2的即时执行模式,它能让你的代码更简洁,调试更方便,也能避免这类版本兼容问题。

内容的提问来源于stack exchange,提问作者Код про

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 10:57:56