TensorFlow 和 Keras 是协同关系,Keras 作为其高级 API;pip install tensorflow 即可安装并自动包含 Keras;用 Sequential 搭建 MNIST 分类模型仅需 10 行代码,内置数据加载与归一化是关键调试习惯。

TensorFlow 和 Keras 并不是两个要“二选一”的工具,而是同一套生态里的协作关系:Keras 是 TensorFlow 的高级 API 接口,写起来简洁,适合入门和快速实验;TensorFlow 提供底层控制能力,适合调优、部署或定制训练逻辑。
从安装到跑通第一个模型:三步起步
不用从源码编译,推荐用 pip 安装官方预编译版本:
- 执行 pip install tensorflow(自动包含 Keras,无需单独装 keras)
- 验证是否成功:import tensorflow as tf; print(tf.__version__)
- 写个最小可运行示例:用 Keras 构建一个识别手写数字的全连接网络(MNIST),5 行定义模型、3 行编译、2 行训练,10 秒内出结果
理解 Keras 的三层结构:Model、Layer、Data
Keras 把深度学习流程拆得非常直观:
- Layer 层:比如 Dense(128, activation='relu') 就是一个含 128 个神经元的全连接层,激活函数是 ReLU
- Model 模型:用 Sequential() 堆叠 Layer,或用 Functional API 构建多输入/多输出结构
- Data 数据:Keras 内置 tf.keras.datasets.mnist.load_data() 等接口,返回 NumPy 数组,直接喂给 model.fit()
调试与优化的几个关键习惯
新手常卡在“模型不收敛”或“结果不准”,多数问题出在数据和配置上:
立即学习“Python免费学习笔记(深入)”;
- 检查输入数据形状:图像默认是 (height, width, channels),但有些加载方式返回 (samples, height, width) —— 忘记加通道维度会报错
- 别跳过归一化:像素值缩放到 [0,1] 或 [-1,1],用 x_train = x_train.astype('float32') / 255.0
- 观察 loss 和 accuracy 曲线:用 model.fit(..., verbose=1) 看每轮输出,或配合 tf.keras.callbacks.TensorBoard 可视化
- 过拟合?先加 Dropout(0.5) 或 BatchNormalization(),比立刻换模型更有效
下一步:不止于跑通,还要能改、能查、能上线
入门后建议自然延伸的方向:
- 用 model.summary() 查参数量,用 model.layers[0].get_weights() 检查某层权重
- 保存模型:推荐 model.save('my_model.h5')(HDF5 格式)或 model.save('my_model_dir')(SavedModel,支持 TensorFlow Serving)
- 加载已有模型做迁移学习:用 tf.keras.applications.MobileNetV2(weights='imagenet'),冻结前几层,只训练最后分类头
- 部署小模型到本地:用 tf.lite.TFLiteConverter.from_saved_model() 转成轻量级 tflite 格式,可在手机或树莓派运行










