核心要点
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})
二、角色
- 分配资源:GPU/CPU 内存
- 执行节点:sess.run(fetches, feed_dict) 按依赖序计算
- 传入数据:feed_dict 将值绑到 Placeholder
- 取出结果:返回 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。
追问
追问 1:Session.run 可以一次算多个节点吗?
可以,fetches 传列表或字典,一次 run 返回多个张量值,框架自动调度公共子图,避免重复计算。
追问 2:InteractiveSession 和 Session 区别?
InteractiveSession 建图后默认自身为活动 session,适合 Jupyter 逐 cell 实验;普通 Session 需显式 with 块。均为 1.x 概念。
追问 3:TF 2.x 如何模拟 Session 行为?
直接调用张量运算;批量训练用 tf.function 编译;部署用 SavedModel 在 Serving 环境加载执行,无需手写 Session。
🔗 相似问题
同一考点的不同问法,换着练更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习
