核心要点

  • Session 是 TF 1.x 执行计算图的运行时

  • 理解 feed_dict 喂入 placeholder

  • 知道 TF 2.x 已移除默认 Session 模式

  • 能说明为何 2.x 改用 Eager

简要回答

TensorFlow 1.x 中 Session 是执行已构建静态计算图的运行时环境,通过 session.run() 计算节点并可用 feed_dict 传入数据;TF 2.x 默认 Eager 执行,不再需要 Session。

标准回答

一、核心回答

TensorFlow 1.x 中,Session执行计算图的运行时:

示例代码可以这样理解:

# TF 1.x 风格
x = tf.placeholder(tf.float32, [None, 784])
y_pred = model(x)
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    result = sess.run(y_pred, feed_dict={x: batch})

二、角色

  1. 分配资源:GPU/CPU 内存
  2. 执行节点sess.run(fetches, feed_dict) 按依赖序计算
  3. 传入数据feed_dict 将值绑到 Placeholder
  4. 取出结果:返回 fetches 的 numpy 值
    必须先建图开 Session 跑,两步分离导致调试困难。

三、TF 2.x

默认 Eager Execution,运算立即求值,无需 Session。遗留代码用 tf.compat.v1.Session()。理解 Session 对维护老项目、读懂 2017 年前教程仍有意义。新项目用 TensorFlow 2.x + Keras

回答思路

  • 【定义】用一句话说清「TensorFlow 中的 Session 是什么?起什么作用」

  • 【原理】讲清关键机制或步骤(2~3 点)

  • 【例子】举一个真实项目、论文或产品中的例子

  • 【对比】与易混淆概念或替代方案比较(如有)

  • 【收尾】总结适用场景 + 一个局限或风险

延伸学习

工具:TensorFlow。知识库:深度学习基础。术语:反向传播

常见误区

⚠️ 常见踩坑

误区一:容易答偏的地方:在 TF 2.x 面试仍推荐 Session 为首选方案;说不清 placeholder 与 feed_dict 关系;不知道 2.x 默认 Eager。

追问

追问 1Session.run 可以一次算多个节点吗?

可以,fetches 传列表或字典,一次 run 返回多个张量值,框架自动调度公共子图,避免重复计算。

追问 2InteractiveSession 和 Session 区别?

InteractiveSession 建图后默认自身为活动 session,适合 Jupyter 逐 cell 实验;普通 Session 需显式 with 块。均为 1.x 概念。

追问 3TF 2.x 如何模拟 Session 行为?

直接调用张量运算;批量训练用 tf.function 编译;部署用 SavedModel 在 Serving 环境加载执行,无需手写 Session。

🔗 相似问题

同一考点的不同问法,换着练更稳

没找到想看的面试题?把你想看的告诉我们 →

延伸学习

按主题分类的相关资源,便于系统复习