11 Keras框架从零教程:构建模型之功能API
系列进度
Keras 入门 · 第 11 / 28 篇
整理说明
这篇内容怎么整理
郭震 · 2026-06-04
阅读路线
先按这条路线读
先抓住主线,再回到代码、配置和图文细节,读起来会更稳。
Functional API 把层当成可连接的计算节点,适合表达真实项目里常见的分支、合并和共享结构。
我会把输入、输出和中间连接画出来。图能画清楚,代码通常也能写清楚。
在上一篇文章中,我们介绍了Keras框架中Sequential模型的构建方式,这是最基础和线性的模型构建方法。本篇文章将深入探讨Keras的功能API(Functional API),这是一种更加灵活和强大的构建模型方法,适用于复杂的模型架构,比如多输入多输出的模型、共享层的模型等。
什么是功能API
Keras的功能API允许用户以更加复杂和灵活的方式构建模型。在功能API中,模型的构建是基于“层”的函数调用,这使得我们能够创建非线性结构的模型。这对于深度学习中的一些复杂应用场景尤为重要,如图像分割、图像生成等任务。
使用 Keras Functional API 时,先画清输入、层连接、分支合并、输出节点和模型编译配置。
功能API的基础构建方式
使用功能API构建模型的基本流程如下:
- 定义输入:使用
Input层定义输入张量。 - 构建图:将层连接起来以形成模型的计算图。
- 创建模型:通过
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框架从零教程:构建模型之功能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,学习了如何以更加灵活的方式构建复杂模型。从简单的全连接网络,到具备多个输入输出的复杂模型,功能API为我们提供了强大的工具来实现多种需求。以下篇文章中,我们将重点关注如何建立自定义模型,以进一步扩展我们的模型构建能力。
继续阅读
从这篇继续找到相关教程
常见问题
读前先确认这三点
Keras框架从零教程:构建模型之功能API适合谁读?
这是 Keras 入门 系列第 11 / 28 篇,适合正在学习Keras 入门,并且需要把概念落到操作步骤或判断标准里的读者。
读这篇Keras 入门教程要多久?
按中文技术文章阅读速度估算,通读大约 3 分钟;如果要跟着复现,建议把命令、配置和结果检查分开做。
这篇文章里的图文节点怎么用?
正文里有 6 个图文节点,可以先用它们抓住流程、配置和判断点,再回到对应段落细读。
分享文章
转发到常用平台
微信/朋友圈可先复制链接
相关教程
从相近问题继续读
继续阅读