核心要点
Sequential 与 Functional API 两种建模范式
compile + fit 标准训练流
了解子类化 Model 自定义
能写最小 MNIST 示例
简要回答
TensorFlow 常用 tf.keras.Sequential 或 Functional API 堆叠层定义模型,model.compile 配置优化器与损失,model.fit 训练;复杂模型可子类化 tf.keras.Model。
标准回答
一、先给出结论和背景
- 核心回答:在 TensorFlow 中构建 神经网络 主要有三种方式:
- Sequential API:(线性堆叠)
示例代码可以这样理解:
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10),
])
二、拆开关键步骤和判断点
- Functional API:(多输入/分支)
示例代码可以这样理解:
inputs = tf.keras.Input(shape=(28, 28))
x = tf.keras.layers.Flatten()(inputs)
outputs = tf.keras.layers.Dense(10)(x)
model = tf.keras.Model(inputs, outputs) - 子类化 Model:(完全自定义 call)
三、补上落地边界和取舍
- 训练:示例代码可以这样理解:
model.compile(optimizer='adam', loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
数据用 tf.data.Dataset 可扩展大规模管道。部署 model.save('saved_model')。详见 深度学习基础。
面试里不要只停在公式或名词,可以补 在 TensorFlow 中构建神经网络 对训练稳定性、泛化、收敛速度或显存/算力的影响。再说明一个常见调参或排错场景,面试官会更容易判断你真的用过这些方法。
回答思路
【定义】用一句话说清「如何在 TensorFlow 中构建神经网络」
【原理】讲清关键机制或步骤(2~3 点)
【例子】举一个真实项目、论文或产品中的例子
【对比】与易混淆概念或替代方案比较(如有)
【收尾】总结适用场景 + 一个局限或风险
延伸学习
工具:TensorFlow。知识库:深度学习基础、深度学习训练技巧。
常见误区
⚠️ 常见踩坑
误区一:容易答偏的地方:Dense 输出已 softmax 又用 from_logits=True;不 compile 就 fit;输入 shape 与数据不匹配。
追问
追问 1:from_logits=True 什么意思?
Dense 层不跟 Softmax,输出 raw logits;损失函数内部做数值稳定的 softmax+crossentropy,避免二次 softmax 精度问题。
追问 2:Functional 和 Sequential 如何选?
单路径线性 → Sequential 最简;多输入、残差、共享层 → Functional;动态控制流 → 子类化。
追问 3:如何用回调 EarlyStopping?
model.fit(..., callbacks=[tf.keras.callbacks.EarlyStopping(patience=3, restore_best_weights=True)]) 监控 val_loss 防过拟合。
🔗 相似问题
同一考点的不同问法,换着练更稳
延伸学习
按主题分类的相关资源,便于系统复习
