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

TensorFlow报NameError: name 'session' is not defined错误求助

解决NameError: name 'session' is not defined问题

嘿,这个问题我太熟了——你犯了一个很常见的代码顺序错误!

问题出在哪?

Python是从上到下顺序执行代码的,你现在的写法是:先写了调用session.run()的代码,但真正创建session的with tf.Session() as session:块却放在了这段代码的后面。当解释器运行到session.run()时,它根本不知道session这个变量是什么,所以直接抛出了NameError。

怎么修复?

把所有需要用到session的代码,全搬到with tf.Session() as session:的代码块内部。这样当执行到这些代码时,session已经被正确创建并初始化了。

修正后的代码示例

# 先完成张量定义和数据准备(这部分不需要session)
confusionMatrix = tf.confusion_matrix(labels=y_true_cls,predictions=y_pred_cls)
x_batch, y_batch, _, cls_batch = data.valid.next_batch(batch_size_validation)

# 这里才创建并启动session,所有依赖session的操作都放这里面
with tf.Session() as session:
    # 先初始化所有变量
    init = tf.global_variables_initializer()
    session.run(init)
    
    # 现在session已经存在,可以正常执行运算了
    confusionMatrix = session.run(confusionMatrix, feed_dict={x: x_batch, y_true: y_batch})

额外小提示

  • 使用with语句管理session是TensorFlow的最佳实践,它会自动帮你关闭session,避免资源泄漏。
  • 所有需要通过session执行的操作(比如变量初始化、张量运算、模型训练/预测),都必须放在这个with块内部。

内容的提问来源于stack exchange,提问作者Simplicity

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:46