核心要点

  • Placeholder 是 TF 1.x 图输入占位符

  • 通过 feed_dict 在 Session.run 喂值

  • TF 2.x 已废弃,改用函数参数

  • 理解历史 API 维护老代码

简要回答

TensorFlow 1.x 的 Placeholder 是计算图中的输入占位节点,运行时用 feed_dict 传入实际数据;TF 2.x Eager 模式已弃用,直接传张量即可。

标准回答

PlaceholderTensorFlow 1.x 静态图中的输入占位符

python
# 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 概念。

追问

追问 1placeholder 的 shape None 含义?

None 表示该维运行时任意大小,常用于 batch 维。全固定 shape 则只能喂固定大小数据。

追问 2feed_dict 还能喂什么?

Placeholder、tf.Variable 的更新值、控制依赖的张量等。是 1.x Session 与图交互的主要方式。

追问 32.x 如何等价实现可变 batch?

Python 函数参数天然可变;tf.data.Dataset 批处理;@tf.function 追踪时 batch 维可为 None 或动态。

🔗 相似问题

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

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

延伸学习

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