核心要点

  • 能说清三种建模范式:Sequential 适合单输入单输出线性堆叠,Functional API 适合多输入/分支/共享层,子类化 Model 适合完全自定义 call

  • 能讲标准训练流 compile(配 optimizer/loss/metrics)→ fit → evaluate/predict

  • 能指出 Dense 不加 softmax 时损失需 from_logits=True,二者只能取其一

  • 能写出最小 MNIST:Flatten + Dense(128, relu) + Dense(10),用 SparseCategoricalCrossentropy

标准回答

TensorFlow 中构建 神经网络 主要有三种方式:

1. Sequential API(线性堆叠)

python
model = tf.keras.Sequential([
    tf.keras.layers.Flatten(input_shape=(28, 28)),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10),
])

2. Functional API(多输入/分支)

python
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)

3. 子类化 Model(完全自定义 call

训练

python
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')。详见 深度学习基础

常见误区

⚠️ 常见踩坑

最后一层已加 activation="softmax" 却又设 from_logits=True,相当于对概率再做一次 softmax,loss 收敛异常、精度上不去;另一个是 Sequential 首层不写 input_shape 又在 build/fit 前调 model.summary(),因权重尚未创建而报错。

追问

追问 1from_logits=True 什么意思?

表示传给损失的是未经 softmax/sigmoid 的原始 logits,损失函数内部自己做归一化,数值更稳定(log-sum-exp 技巧避免溢出)。所以推荐最后一层不加激活、loss 设 from_logits=True;若已加 softmax 则必须设 False。

追问 2Functional 和 Sequential 如何选?

题库专题:PyTorch 的 Sequential 模型是什么?与 Module 有何区别?

单输入单输出、层逐个线性堆叠用 Sequential,最简洁;一旦需要多输入/多输出、分支合并、残差连接、共享层,就必须用 Functional API(以张量为节点连成图)。需要在 forward 里写动态控制流则子类化 Model。

题库延伸:与本追问相关的专题题 → PyTorch 的 Sequential 模型是什么?与 Module 有何区别?

追问 3如何用回调 EarlyStopping?

构造 tf.keras.callbacks.EarlyStopping(monitor="val_loss", patience=3, restore_best_weights=True),传给 model.fit 的 callbacks 列表。监控的验证指标连续 patience 个 epoch 不改善就停训,并恢复到最佳权重,避免过拟合和浪费算力。常与 ModelCheckpoint、ReduceLROnPlateau 一起用。

延伸学习

与本题相关的知识库文章、术语、工具与行业资讯。

🛠️ AI 工具

  • Pytorch

    Meta 开源的深度学习框架,100K+ stars。以动态计算图和 Pythonic 风格著称,在学术界和工业界都有广泛应用,支持分布式训练、移动端部署和 ONNX 导出

  • Tensorflow

    全球最流行的机器学习框架之一,195K+ stars。Google 开源的端到端 ML 平台,支持 TensorFlow、Keras 等多种 API,覆盖深度学习、强化学习、移动端部署等全场景,是 AI 工程师的必备工具

  • Keras

    深度学习框架,64,020+ stars。高级神经网络 API,支持 TensorFlow、JAX、PyTorch 多后端。以用户友好著称,让深度学习从实验到生产的转化变得简单高效