郭震 AI公众号:郭震AI

13 Keras框架从零教程系列:模型编译

发布日期:

最近更新:

分类: Keras

预计阅读: 4 分钟

阅读次数: 0

预计阅读4 分钟
结构重点9 个
图文要点6 张
正文规模1.6k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

独立整理围绕 9 个结构重点拆成环境、步骤、验证点和常见误区,尽量让读者能照着复现。
图文对照保留 6 张和配置、流程、判断结果有关的图片,方便快速定位正文重点。
持续校对工具、模型和命令变化较快,后续优先修正入口、参数和风险提醒。

阅读路线

先按这条路线读

先抓住主线,再回到代码、配置和图文细节,读起来会更稳。

图文要点

先看本文图文节点

按图先建立主线,再跳回正文核对步骤、配置和判断标准。

模型编译流程图查看大图
模型编译流程图

compile 是把训练目标说清楚:用什么优化器,优化哪个 loss,用哪些指标观察表现。

模型编译实操核对图查看大图
模型编译实操核对图

我会检查 loss 是否匹配任务。分类、回归、多标签和多输出任务,编译配置不能混用。

在上一篇中,我们讨论了如何建立自定义模型,现在我们将介绍Keras框架中“模型编译”的过程。编译模型是训练深度学习网络之前的重要步骤,它涉及到选择优化器、损失函数和评估指标。

1. 模型编译的过程

在Keras中,模型的编译是通过调用模型对象的compile方法来完成的。该方法接受以下几个主要参数:

Keras模型编译判断卡查看大图
Keras模型编译判断卡

编译 Keras 模型时,先确认任务类型、损失函数、优化器、学习率、评估指标和输出层形状。

  • optimizer:指定要使用的优化器,例如'adam''sgd'
  • loss:用于计算训练过程中损失的函数,通常根据任务类型选择(如binary_crossentropy用于二分类,categorical_crossentropy用于多分类)。
  • metrics:评估模型性能的指标,常用的指标有accuracy

1.1 示例代码

假设我们已经定义了一个简单的神经网络模型,下面是如何编译它的示例:

from keras.models import Sequential
from keras.layers import Dense

# 构建一个简单的神经网络模型
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(32,))) # 输入层
model.add(Dense(1, activation='sigmoid'))  # 输出层 (二分类)

# 编译模型
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=['accuracy'])

在上述代码中,我们使用了以下内容:

  • 优化器:使用'adam'优化器,它是一种自适应学习率优化器,通常效果良好。
  • 损失函数:对于二分类问题,我们使用了'binary_crossentropy',它能够有效衡量预测值与真实值之间的差异。
  • 评估指标:选择了'accuracy'作为评估指标,便于我们在训练和验证过程中了解模型的性能。

2. 优化器的选择

选择合适的优化器对于模型的训练至关重要。Keras提供了多种优化器,以下是几种常用的优化器及其说明:

Keras阅读地图卡查看大图
Keras阅读地图卡

《Keras框架从零教程系列:模型编译》这类内容容易被细节带偏。先看图里的主线,再回到正文核对环境、输入、输出和判断标准。

  • SGD(随机梯度下降):经典的优化方法,适用于许多任务。可以结合动量使用。
  • Adam:结合了动量和自适应学习率的方法,通常是推荐的默认选择。
  • RMSprop:在RNN中表现良好,对衰减梯度尤为有效。

2.1 优化器的参数

优化器通常可以接受一些参数,例如学习率(learning_rate)等。我们可以通过以下方式自定义优化器:

from keras.optimizers import Adam

# 自定义学习率
adam_optimizer = Adam(learning_rate=0.001)

# 编译模型时使用自定义优化器
model.compile(optimizer=adam_optimizer,
              loss='binary_crossentropy',
              metrics=['accuracy'])

3. 常见损失函数

选择合适的损失函数是确保模型准确性的关键。以下是一些常见损失函数及其适用场景:

  • 二分类binary_crossentropy
  • 多分类categorical_crossentropy
  • 回归问题mean_squared_error

3.1 示例:多分类损失函数

如果我们用的是多分类模型(例如分类10种不同的图片),我们可以选择categorical_crossentropy来编译模型:

# 假设输出层有10个神经元,表示10个分类
model.add(Dense(10, activation='softmax'))

# 使用categorical_crossentropy损失函数
model.compile(optimizer='adam',
              loss='categorical_crossentropy',
              metrics=['accuracy'])

4. 评估指标

除了accuracy之外,Keras还支持多种评估指标,例如precisionrecallF1-score。选择合适的评估指标可以提供更全面的模型性能视图。

4.1 自定义评估指标

我们可以定义自定义评估指标并在编译时使用它们:

def precision(y_true, y_pred):
    true_pos = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))
    predicted_pos = K.sum(K.round(K.clip(y_pred, 0, 1)))
    return true_pos / (predicted_pos + K.epsilon())

# 编译模型时使用自定义评估指标
model.compile(optimizer='adam',
              loss='binary_crossentropy',
              metrics=[precision])
Keras框架从零教程系列:模型编译应用复盘卡查看大图
Keras框架从零教程系列:模型编译应用复盘卡

复习《Keras框架从零教程系列:模型编译》时,建议把关键概念、操作步骤和可见结果放在同一页里回看。

Keras框架从零教程系列:模型编译应用检查卡查看大图
Keras框架从零教程系列:模型编译应用检查卡

练习《Keras框架从零教程系列:模型编译》时,建议把输入条件、处理动作和可见结果写在一起,方便下次复查。

5. 小结

在本篇中,我们详细探讨了Keras模型的编译过程,包括优化器、损失函数以及评估指标的选择。选择正确的编译参数对于确保您的模型有效训练至关重要。下一篇中,我们将深入讨论模型训练的具体步骤,进一步加深对Keras框架的理解。

通过这些内容,您应该能够更好地理解并应用模型编译的知识,为后续的模型训练做好铺垫。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

Keras框架从零教程系列:模型编译适合谁读?

这是 Keras 入门 系列第 13 / 28 篇,适合正在学习Keras 入门,并且需要把概念落到操作步骤或判断标准里的读者。

读这篇Keras 入门教程要多久?

按中文技术文章阅读速度估算,通读大约 4 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。

这篇文章里的图文节点怎么用?

正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...