郭震 AI公众号:郭震AI

11 Keras框架从零教程:构建模型之功能API

发布日期:

最近更新:

分类: Keras

预计阅读: 3 分钟

阅读次数: 0

预计阅读3 分钟
结构重点8 个
图文要点6 张
正文规模1.3k 字

整理说明

这篇内容怎么整理

郭震 · 2026-06-04

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

阅读路线

先按这条路线读

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

图文要点

先看本文图文节点

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

Functional API流程图查看大图
Functional API流程图

Functional API 把层当成可连接的计算节点,适合表达真实项目里常见的分支、合并和共享结构。

Functional API实操核对图查看大图
Functional API实操核对图

我会把输入、输出和中间连接画出来。图能画清楚,代码通常也能写清楚。

在上一篇文章中,我们介绍了Keras框架中Sequential模型的构建方式,这是最基础和线性的模型构建方法。本篇文章将深入探讨Keras的功能API(Functional API),这是一种更加灵活和强大的构建模型方法,适用于复杂的模型架构,比如多输入多输出的模型、共享层的模型等。

什么是功能API

Keras的功能API允许用户以更加复杂和灵活的方式构建模型。在功能API中,模型的构建是基于“层”的函数调用,这使得我们能够创建非线性结构的模型。这对于深度学习中的一些复杂应用场景尤为重要,如图像分割、图像生成等任务。

Keras功能API判断卡查看大图
Keras功能API判断卡

使用 Keras Functional API 时,先画清输入、层连接、分支合并、输出节点和模型编译配置。

功能API的基础构建方式

使用功能API构建模型的基本流程如下:

  1. 定义输入:使用Input层定义输入张量。
  2. 构建图:将层连接起来以形成模型的计算图。
  3. 创建模型:通过Model类创建模型实例。

下面通过一个简单的例子来演示如何使用功能API。

示例:构建一个简单神经网络

假设我们想构建一个简单的全连接神经网络来进行二分类任务。

from keras.layers import Input, Dense
from keras.models import Model

# 1. 定义输入
inputs = Input(shape=(20,))  # 输入维度为20的张量

# 2. 构建图
x = Dense(64, activation='relu')(inputs)  # 添加第一层
x = Dense(64, activation='relu')(x)        # 添加第二层
outputs = Dense(1, activation='sigmoid')(x)  # 输出层

# 3. 创建模型
model = Model(inputs=inputs, outputs=outputs)

# 汇总模型信息
model.summary()

这里我们定义了一个输入层,接着加入两个隐藏层和一个输出层。最后,通过Model类来创建一个完整的模型。

复杂模型的构建

使用功能API,不仅可以构建简单的模型,还能够轻松实现具有复杂结构的模型。例如,我们可以构建一个有多个输入和输出的模型。

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

《Keras框架从零教程:构建模型之功能API》读到最后,可以把图里的流程当成检查表:问题是否明确,操作是否落地,判断标准是否能复用。

示例:多输入多输出模型

例如,我们想创建一个模型,接收两个不同的输入并生成两个不同的输出。可以通过以下步骤实现:

from keras.layers import Input, Dense, Concatenate
from keras.models import Model

# 定义输入
input_a = Input(shape=(32,))  # 第一个输入
input_b = Input(shape=(32,))  # 第二个输入

# 第一部分模型
x = Dense(16, activation='relu')(input_a)

# 第二部分模型
y = Dense(16, activation='relu')(input_b)

# 合并两个模型的输出
combined = Concatenate()([x, y])

# 添加最终输出层
z = Dense(1, activation='sigmoid')(combined)

# 创建模型
model = Model(inputs=[input_a, input_b], outputs=z)

# 汇总模型信息
model.summary()

在这个示例中,我们定义了两个输入,分别通过独立的神经网络层处理,然后将它们的输出合并,最终得到一个输出层。

共享层的模型

功能API还可以实现层的共享,这对于需要在多个输入间共享权重的场合非常有用。

示例:共享层

# 定义共享层
shared_layer = Dense(64, activation='relu')

# 定义输入
input_1 = Input(shape=(10,))
input_2 = Input(shape=(10,))

# 使用共享层
output_1 = shared_layer(input_1)
output_2 = shared_layer(input_2)

# 添加输出层
output_1 = Dense(1, activation='sigmoid')(output_1)
output_2 = Dense(1, activation='sigmoid')(output_2)

# 创建模型
model = Model(inputs=[input_1, input_2], outputs=[output_1, output_2])

# 汇总模型信息
model.summary()

在这个示例中,shared_layer被应用到两个不同的输入中。这样,在训练时,两个输入共享该层的权重。

Keras框架从零教程:构建模型之功能API应用复盘卡查看大图
Keras框架从零教程:构建模型之功能API应用复盘卡

如果《Keras框架从零教程:构建模型之功能API》还没完全消化,可以从这张卡片的四个动作重新走一遍。

Keras框架从零教程:构建模型之功能API应用检查卡查看大图
Keras框架从零教程:构建模型之功能API应用检查卡

回看《Keras框架从零教程:构建模型之功能API》时,不必一次做大项目,先用一条简单样例确认主线是否清楚。

总结

在本篇文章中,我们探讨了Keras的功能API,学习了如何以更加灵活的方式构建复杂模型。从简单的全连接网络,到具备多个输入输出的复杂模型,功能API为我们提供了强大的工具来实现多种需求。以下篇文章中,我们将重点关注如何建立自定义模型,以进一步扩展我们的模型构建能力。

继续阅读

从这篇继续找到相关教程

AI 教程总索引

常见问题

读前先确认这三点

Keras框架从零教程:构建模型之功能API适合谁读?

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

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

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

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

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

分享文章

转发到常用平台

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

相关教程

AI 教程总索引

继续阅读

继续找到相关 AI 教程

返回栏目

Reader Messages

读者留言

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

最多 800 字

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

0/800

留言列表

0
正在加载留言...