趋近智
fit() 方法Keras提供了简洁易懂的方式来定义神经网络的结构。对于许多标准的深度学习任务,网络由直接的序列层组成,其中一个层的输出直接作为下一个层的输入。对于这类常见情形,Keras提供了Sequential API,一种简单而优雅地逐层构建模型的方法。
可以将Sequential模型想象成线性堆叠的煎饼。您将层逐一堆叠起来,数据按照它们被添加的顺序流经各层。由于其简洁性,它是Keras中开始构建模型最常用的方法。
创建Sequential模型主要有两种方式:
.add()方法: 这使您能够逐步添加层,在编程构建模型或进行试验时非常有用。我们来看看这两种方法的实际应用。首先,请确保导入必要的组件:
# 导入Sequential模型类型
from keras.models import Sequential
# 导入Dense层类型(全连接)
from keras.layers import Dense
方法一:层列表
您可以直接将层实例列表传递给Sequential构造函数来定义您的模型:
# 定义一个包含两个Dense层的模型
model = Sequential([
Dense(units=64, activation='relu', input_shape=(784,)), # 第一层需要input_shape
Dense(units=10, activation='softmax') # 输出层
])
# 打印模型层和参数的摘要
model.summary()
方法二:使用.add()
或者,您可以实例化一个空的Sequential模型,并使用.add()方法逐一添加层:
# 创建一个空的Sequential模型
model = Sequential()
# 添加第一层(指定输入形状)
model.add(Dense(units=64, activation='relu', input_shape=(784,)))
# 添加第二层(输出层)
model.add(Dense(units=10, activation='softmax'))
# 打印摘要
model.summary()
这两种方法都会得到完全相同的模型架构。选择哪种通常取决于个人偏好或编码风格。基于列表的方法更紧凑,而.add()方法对于复杂的序列或有条件添加层的情况可能更易读。
请注意,两个示例中第一个 Dense层都有input_shape=(784,)参数。这很重要。Keras需要知道模型应预期输入的形状,以便为第一层创建必要的权重。
(784,)是什么意思? 这表示模型预期输入样本,其中每个样本是包含784个特征的向量。这是展平的MNIST图像(28x28像素 = 784)的常见形状。如果您处理的是包含10个特征的表格数据,您可以使用input_shape=(10,)。对于未展平的图像数据,您可能会使用(高度, 宽度, 通道)等形状,例如(28, 28, 1)。您只需为添加到Sequential模型中的第一个层指定输入形状。
Sequential模型强制执行简单、线性的数据流:
此图表说明了数据如何通过一个包含两个
Dense层的简单Sequential模型进行线性流动。输入数据依次经过第1层和第2层,生成最终输出。
尽管Sequential API对许多任务都很有用,但它也有局限性。它严格设计用于每个层只有一个输入张量和一个输出张量,且这些层线性排列的模型。您不能使用Sequential API来构建以下模型:
对于这些更复杂的架构,Keras提供了函数式API,我们将在后面的章节中介绍。
目前,Sequential API提供了一种简洁明了的方式,让您开始构建许多常见类型的神经网络,例如简单的前馈分类器和回归器。在接下来的章节中,我们将更仔细地查看这些示例中使用的Dense层和激活函数。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造