Python深度学习入门教程_Keras模型构建实战

13次阅读

keras搭建cnn图像分类模型需三步:1. 数据准备——加载MNIST并归一化、扩维、one-hot编码;2. 模型定义——Sequential叠Conv2D、MaxPooling2D、Flatten和Dense层;3. 编译训练——选Adam优化器、categorical_crossentropy损失及accuracy指标,再评估预测。

Python深度学习入门教程_Keras模型构建实战

用Keras构建深度学习模型并不难,关键在于理解数据、模型、训练三者的衔接逻辑。下面以图像分类任务为例,带你从零搭建一个可运行的CNN模型,不绕弯子,直击实操要点。

准备数据:加载+预处理一步到位

Keras内置了常用数据集(如MNIST、CIFAR-10),适合快速验证模型结构。以MNIST为例:

  • 直接调用keras.datasets.mnist.load_data()获取训练/测试图像与标签
  • 图像像素值默认是0–255的整数,需归一化为0–1的float32:用x_train.astype(‘float32’) / 255
  • 灰度图需增加通道维度:用x_train[…, tf.newaxis]np.expand_dims(x_train, -1)
  • 标签转为one-hot编码(适用于多分类):tf.keras.utils.to_categorical(y_train, 10)

定义模型:用Sequential还是Functional?

新手推荐Sequential——结构清晰、代码简洁;遇到多输入、多输出或共享层时再切到Functional API

  • 基础CNN示例:
    model = Sequential([     Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),     MaxPooling2D(),     Conv2D(64, (3,3), activation='relu'),     MaxPooling2D(),     Flatten(),     Dense(64, activation='relu'),     Dense(10, activation='softmax') ])
  • 每层输出形状会自动推导,但建议在input_shape处明确写清(含batch维度以外的尺寸)
  • 最后一层神经元数=类别数,激活函数选softmax(多分类)或sigmoid(二分类)

编译与训练:参数别硬套,看任务选指标

编译阶段决定“怎么学”,训练阶段控制“学多久”:

立即学习Python免费学习笔记(深入)”;

  • optimizer:初学用Adam(自适应学习率,收敛稳)
  • loss:多分类+one-hot标签 → ‘categorical_crossentropy’;多分类+整数标签 → ‘sparse_categorical_crossentropy’
  • metrics:至少加[‘accuracy’],便于观察训练效果
  • model.fit()中设置validation_split=0.2可自动划分验证集,省去手动切分

评估与预测:别只看准确率

训练完要真正检验模型是否学到了泛化能力:

  • model.evaluate(x_test, y_test)得到测试集上的loss和accuracy
  • model.predict(x_test[:5])查看前5个样本的预测概率分布,配合np.argmax()还原类别索引
  • 画混淆矩阵、查准率/查全率?用sklearn.metrics.classification_reportconfusion_matrix即可

不复杂但容易忽略:每次改模型结构后记得重新编译(model.compile()),否则训练用的仍是旧配置。跑通第一个模型后,再逐步加Dropout、BatchNorm、数据增强,迭代优化。

text=ZqhQzanResources