核心要点
Placeholder 是 TF 1.x 图输入占位符
通过 feed_dict 在 Session.run 喂值
TF 2.x 已废弃,改用函数参数
理解历史 API 维护老代码
简要回答
TensorFlow 1.x 的 Placeholder 是计算图中的输入占位节点,运行时用 feed_dict 传入实际数据;TF 2.x Eager 模式已弃用,直接传张量即可。
标准回答
Placeholder 是 TensorFlow 1.x 静态图中的输入占位符:
# TF 1.x
x = tf.placeholder(tf.float32, shape=[None, 784], name='input')
y_pred = tf.matmul(x, W) + b
with tf.Session() as sess:
out = sess.run(y_pred, feed_dict={x: batch_numpy})作用:
- 建图时形状/类型已知,值运行时注入
- 同一图复用不同 batch(None 表示可变 batch 维)
- 与 Variable(参数)区分:Placeholder 是输入数据
TF 2.x:已废弃。Eager 下直接 model(tf.constant(batch)) 或 model(batch_tensor);tf.function 用函数参数代替 placeholder。
维护 legacy 代码或读老教程需理解 placeholder + feed_dict + Session 三位一体。新项目勿用。详见 TensorFlow 迁移指南。
回答思路
【定义】用一句话说清「TensorFlow 中的 Placeholder 是什么?如何使用」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
延伸学习
工具:TensorFlow。知识库:深度学习基础。术语:反向传播。
常见误区
⚠️ 常见踩坑
在 TF 2.x 新项目创建 placeholder;混淆 placeholder 与 Variable;不知道 feed_dict 是 1.x 概念。
追问
追问 1:placeholder 的 shape None 含义?
None 表示该维运行时任意大小,常用于 batch 维。全固定 shape 则只能喂固定大小数据。
追问 2:feed_dict 还能喂什么?
Placeholder、tf.Variable 的更新值、控制依赖的张量等。是 1.x Session 与图交互的主要方式。
追问 3:2.x 如何等价实现可变 batch?
Python 函数参数天然可变;tf.data.Dataset 批处理;@tf.function 追踪时 batch 维可为 None 或动态。
🔗 相似问题
同一考点的不同问法,换着练更稳
没找到想看的面试题?把你想看的告诉我们 →
延伸学习
按主题分类的相关资源,便于系统复习
